sql >> Database teknologi >  >> RDS >> Oracle

Forskellen mellem ON- og WHERE-udtryk i SQL-tabel joins

Den største forskel er, når du bruger forskellige joinforbindelser.

Typisk skulle du se det samme resultat, hvis du skulle bruge indre joinforbindelser, men når du begynder at bruge LEFT joins, vil resultaterne ændre sig.

Tag et kig på følgende eksempel

SQL Fiddle DEMO

Og tag et kig på følgende artikel (meget forklarende)

EDIT for @ShannonSeverance

Skema og testdata

CREATE TABLE Table1 (
  ID INT,
  Val VARCHAR(20)
 );

INSERT INTO Table1 VALUES (1,'a');
INSERT INTO Table1 VALUES (2,'a');

CREATE TABLE Table2 (
  ID INT,
  Val VARCHAR(20)
 );

INSERT INTO Table2 VALUES (1,'a');
 

og tests

SELECT t1.ID, t1.Val, t2.ID ID2, t2.Val Val2 FROM Table1 t1 INNER JOIN Table2 t2 ON t1.ID = t2.ID AND t1.Val = t2.Val; SELECT t1.ID, t1.Val, t2.ID ID2, t2.Val Val2 FROM Table1 t1,Table2 t2 WHERE t1.ID = t2.ID AND t1.Val = t2.Val; SELECT t1.ID, t1.Val, t2.ID ID2, t2.Val Val2 FROM Table1 t1 LEFT JOIN Table2 t2 ON t1.ID = t2.ID AND t1.Val = t2.Val; SELECT t1.ID, t1.Val, t2.ID ID2, t2.Val Val2 FROM Table1 t1 LEFT JOIN Table2 t2 ON t1.ID = t2.ID WHERE t1.Val = t2.Val;

  1. Dynamisk MySQL-databaseforbindelse til Entity Framework 6

  2. Sådan slettes en fremmednøglebegrænsning i SQL

  3. PDOException "kunne ikke finde driver"

  4. Kopier en tabel fra en database til en anden i Postgres