sql >> Databasteknik >  >> RDS >> Mysql

Vilket är standardbeteendet för MySQL JOIN, INNER eller OUTTER?

I MySQL skriver du JOIN okvalificerad innebär INNER JOIN . Med andra ord INNER i INNER JOIN är valfritt. INNER och CROSS är synonymer i MySQL. För tydlighetens skull skriver jag JOIN eller INNER JOIN om jag har ett anslutningsvillkor och CROSS JOIN om jag inte har ett tillstånd.

Den tillåtna syntaxen för joins beskrivs i dokumentationen .

Effekten är densamma, men historien bakom dem är annorlunda. Kommasyntaxen är från ANSI-89-standarden. Det finns dock ett antal problem med denna syntax så i ANSI-92-standarden introducerades JOIN-nyckelordet.

Jag rekommenderar starkt att du alltid använd JOIN-syntax istället för kommatecken.

  • T1 JOIN T2 ON ... är mer läsbar än T1, T2 WHERE ... .
  • Det är mer underhållbart eftersom tabellrelationerna och filtren är tydligt definierade snarare än blandade.
  • JOIN-syntaxen är lättare att konvertera till OUTER JOIN än kommasyntaxen.
  • Att blanda kommatecken och JOIN-syntaxen i samma programsats kan ge konstiga fel på grund av prioriteringsreglerna.
  • Det är mindre sannolikt att man av misstag skapar en kartesisk produkt när JOIN-syntaxen används på grund av en glömd join-sats, eftersom join-satserna är skrivna bredvid joins och det är lätt att se om en saknas.


  1. MySQL subquery returnerar mer än en rad

  2. Mysql date funktion fungerar inte för mindre än

  3. Java:Anropar en lagrad procedur i en Oracle-databas

  4. Skapa ny tabell i befintlig DB i separat SQLiteOpenHelper-klass