Beide joins geven me dezelfde resultaten:
SELECT * FROM table JOIN otherTable ON table.ID = otherTable.FK
vs
SELECT * FROM table INNER JOIN otherTable ON table.ID = otherTable.FK
Is er enig verschil tussen de verklaringen in prestatie of anderszins?
Verschilt het tussen verschillende SQL-implementaties?
Antwoord 1, autoriteit 100%
Ze zijn functioneel equivalent, maar INNER JOIN
kan wat duidelijker te lezen zijn, vooral als de query andere join-types heeft (bijv. LEFT
of RIGHT
of CROSS
) erin opgenomen.
Antwoord 2, autoriteit 22%
Nee, er is geen verschil, pure syntactische suiker.
Antwoord 3, autoriteit 13%
INNER JOIN = JOIN
INNER JOIN is de standaardinstelling als u niethet type opgeeft wanneer u het woord JOIN gebruikt.
U kunt ook LEFT OUTER JOIN of RIGHT OUTER JOIN gebruiken, in welk geval het woord OUTER optioneel is,
of je kunt CROSS JOIN specificeren.
OF
Voor een inner join is de syntaxis:
SELECTEER …
VAN TabelA
[INNER] WORD LID VAN TableB(met andere woorden, het “INNER”-zoekwoord is optioneel– de resultaten zijn hetzelfde
met of zonder)
Antwoord 4, autoriteit 5%
Verschilt het tussen verschillende SQL-implementaties?
Ja, Microsoft Access staat niet alleen join
. Het vereist inner join
.
5, Autoriteit 3%
Zoals de andere antwoorden al aangeven, is er geen verschil in uw voorbeeld.
Het relevante bit van Grammar is hier gedocumenteerd
<join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
JOIN
Laat zien dat alles optioneel is. De pagina verduidelijkt verder dat
INNER
Specificeert alle bijpassende paren rijen worden geretourneerd. Teruggooien
Ongeëvenaarde rijen van beide tabellen. Wanneer er geen sluitingstype is opgegeven, dit
is de standaard .
De grammatica geeft ook aan dat er een keer is dat de INNER
isvereist. Bij het specificeren van een join-hint.
Zie onderstaand voorbeeld
CREATE TABLE T1(X INT);
CREATE TABLE T2(Y INT);
SELECT *
FROM T1
LOOP JOIN T2
ON X = Y;
SELECT *
FROM T1
INNER LOOP JOIN T2
ON X = Y;