sql >> Database >  >> RDS >> Mysql

Wat is het standaard MySQL JOIN-gedrag, INNER of OUTER?

In MySQL schrijven JOIN ongekwalificeerd impliceert INNER JOIN . Met andere woorden de INNER in INNER JOIN is optioneel. INNER en CROSS zijn synoniemen in MySQL. Voor de duidelijkheid schrijf ik JOIN of INNER JOIN als ik een lidmaatschapsvoorwaarde heb en CROSS JOIN als ik geen aandoening heb.

De toegestane syntaxis voor joins wordt beschreven in de documentatie .

Het effect is hetzelfde, maar de geschiedenis erachter is anders. De kommasyntaxis is van de ANSI-89-standaard. Er zijn echter een aantal problemen met deze syntaxis, dus in de ANSI-92-standaard is het JOIN-sleutelwoord geïntroduceerd.

Ik raad je ten zeerste aan om altijd gebruik de JOIN-syntaxis in plaats van de komma.

  • T1 JOIN T2 ON ... is beter leesbaar dan T1, T2 WHERE ... .
  • Het is beter te onderhouden omdat de tabelrelaties en filters duidelijk zijn gedefinieerd in plaats van door elkaar te worden gemengd.
  • De JOIN-syntaxis is gemakkelijker te converteren naar OUTER JOIN dan de kommasyntaxis.
  • Het mengen van de komma en de JOIN-syntaxis in dezelfde instructie kan merkwaardige fouten opleveren vanwege de voorrangsregels.
  • Het is minder waarschijnlijk dat per ongeluk een cartesiaans product wordt gemaakt bij gebruik van de JOIN-syntaxis vanwege een vergeten join-clausule, omdat de join-clausules naast de joins worden geschreven en het gemakkelijk is om te zien of er een ontbreekt.


  1. Is MySQL Connector/JDBC-thread veilig?

  2. Ondersteunt SQL Server CLR Integration configuratiebestanden?

  3. query-eindstap erg lang op willekeurige tijden

  4. Hoe maak je een Postgres-tabel met een unieke gecombineerde primaire sleutel?