Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

ON ist Teil der Syntax

bei Verwendung von ANSI SQL-92 Syntax, das ON Das Schlüsselwort ist Teil des Joins, mit Ausnahme des cross join da Sie keine Bedingung für die Beziehung haben.

Bsp.

INNER JOIN

SELECT *
FROM tableA INNER JOIN tableB
       on tableA.ID = tableB.ID

CROSS JOIN

SELECT *
FROM tableA CROSS JOIN tableB

ON sollte nach der verknüpften Tabelle folgen (Verknüpfungen wie INNER und OUTER ), damit Sie keinen Syntaxfehler haben. aber wenn Sie ANSI SQL-89 verwenden Syntax, ON Das Schlüsselwort wird weggelassen, aber Sie müssen die Beziehung in der where clause angeben

Bsp.

INNER JOIN

SELECT *
FROM tableA, tableB
WHERE tableA.ID = tableB.ID

CROSS JOIN

SELECT *
FROM tableA, tableB

Es ist fehleranfällig, denn wenn Sie die Bedingung vergessen, wird es keinen Syntaxfehler generieren und wahrscheinlich den cross join ausführen