CROSS JOIN är SQL-operatorn för att utföra en fullständig kartesisk produkt mellan två tabeller. Eftersom det är en kartesisk produkt tillåter den inga villkor under operationen , kan du bara begränsa dess resultat med någon filtreringsoperation (villkoret WHERE).
JOIN (INNER och OUTER JOIN, det vill säga) operatorer, är helt enkelt kartesiska produkter tillsammans med filtreringsoperatorn uttryckt i ON-delen av operatorn (och faktiskt i den ursprungliga syntaxen för SQL fanns det ingen JOIN-operator, bara "komma" notation för att beteckna produkten med kopplingsvillkoret uttryckt alltid i WHERE-delen).
Exempel:
"gammal" notation:
SELECT ...
FROM table1 t1, table2 t2
WHERE t1.attribute = t2.attribute
motsvarande den "moderna" notationen:
SELECT ...
FROM table1 t1 INNER JOIN table2 t2 ON t1.attribute = t2.attribute
medan, för den kartesiska produkten:
"gammal" notation:
SELECT ...
FROM table1 t1, table2 t2
motsvarande den "moderna" notationen:
SELECT ...
FROM table1 t1 CROSS JOIN table2 t2
Med andra ord, en CROSS JOIN som kräver ett villkor är faktiskt någon form av INNER JOIN.