Teknologian jakaminen

MySQL: käytä vasemman liitoksen jälkeen tai missä sen jälkeen?

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

MySQL:ssä,LEFT JOIN Käytetään palauttamaan kaikki tietueet vasemmasta taulukosta (eli LEFT JOIN -avainsanan vasemmalla puolella oleva taulukko), vaikka oikeanpuoleisessa taulukossa ei olisi vastaavia tietueita. Niille tietueille, jotka eivät täsmää oikeanpuoleisessa taulukossa, tulosjoukon oikeanpuoleinen taulukkoosa täytetään arvolla NULL.noinONjaWHERELausekkeiden käyttö, ne ovat mukanaLEFT JOINRoolit ovat erilaisia:

  • PÄÄLLÄ Lause: käytetään määrittämään liitosehdot, eli määrittämään, mitkä tietueet tulee liittää yhteen.Kun haluat yhdistää tietueita tiettyjen vasemman ja oikean taulukon kenttäarvojen välisen suhteen perusteella, nämä ehdot on asetettavaON myöhemmin.jos sisäänONOikealle taulukolle on myöhemmin lisäehtoisia rajoituksia, joita sovelletaan myös yhdistämisen yhteydessä, mutta ne eivät vaikuta periaatteeseen palauttaa kaikki tietueet vasemmasta taulukosta.
  • MISSÄ Lause: käytetään pareille, jotka ovat läpäisseetJOIN Toiminnan muodostama tulosjoukko suodatetaan edelleen.Kun ehto on asetettuWHERElauseke, ne tietueet, jotka eivät täytä ehtoja (joko vasemmasta tai oikeasta taulukosta), poistetaan, mikä voi vaikuttaa alkuperäiseen tarkoitukseen palauttaa kaikki tietueet vasemmasta taulukosta, varsinkin kun käsittelet NULL-arvoja, sinun on oltava erityisen varovainen.

Yksi erityinen tapaus:

Oletetaan, että meillä on kaksi pöytää, yksi onemployees(työntekijätaulukko), toinen ondepartments(osastotaulukko), haluamme selvittää kaikki työntekijät ja heidän osastojen nimet, vaikka jotkin työntekijät eivät olisikaan määrätty tietylle osastolle.

työntekijöiden taulukko:

idnimi
1Alice
2Bob
3Carol

osastojen taulukko:

idnimi
1HR
2SE
3Markkinointi

sisään,employeespöytädepartment_idKenttä voi olla NULL, mikä tarkoittaa, että osastoa ei ole määritetty.

Esimerkki ON käytöstä:

SELECT employees.name, departments.name AS department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.id;