sql >> Database >  >> RDS >> Oracle

Verschil tussen ON- en WHERE-clausules in SQL-tabeljoins

Het belangrijkste verschil is wanneer je verschillende joins gebruikt.

Normaal gesproken zou u hetzelfde resultaat moeten zien als u inner joins zou gebruiken, maar zodra u LEFT joins gaat gebruiken, zullen de resultaten veranderen.

Bekijk het volgende voorbeeld

SQL Fiddle DEMO

En kijk eens naar het volgende artikel (zeer verhelderend)

BEWERKEN voor @ShannonSeverance

Schema- en testgegevens

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');

en testen

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. Hoe TIME() werkt in MariaDB

  2. Alternatieve oplossing voor DCount en DLookup met MS SQL Server Backend

  3. Apache NiFi

  4. Hoe GROUP_CONCAT te gebruiken in een CONCAT in MySQL