sql >> Databáze >  >> RDS >> Oracle

Rozdíl mezi klauzulemi ON a WHERE ve spojeních tabulek SQL

Hlavní rozdíl je, když používáte různá spojení.

Obvykle byste měli vidět stejný výsledek, pokud byste použili vnitřní spojení, ale jakmile začnete používat LEVÉ spojení, výsledky se změní.

Podívejte se na následující příklad

DEMO SQL Fiddle

A podívejte se na následující článek (velmi vysvětlující)

UPRAVIT pro @ShannonSeverance

Data schématu a testu

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

a Testy

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. Získejte první pondělí v měsíci v SQLite

  2. Jak zkontrolovat, zda je databáze SQL poškozena – řešení pro opravu souboru MDF

  3. Podobnosti a rozdíly mezi funkcemi RANK, DENSE_RANK a ROW_NUMBER

  4. Vytvořte databázi SQL Server pomocí Azure Data Studio