Mysql
 sql >> Database >  >> RDS >> Mysql

Perché INNER JOIN non è uguale (!=) si blocca per sempre

Diciamo il tuo primo INNER JOIN restituisce il 75% delle 1.000.000 di righe in table1 . La seconda query non restituisce le altre 250.000 righe come pensi. Invece, tenta di creare un prodotto cartesiano e rimuovere le 750.000 righe corrispondenti. Quindi sta cercando di restituire 6.000.000 × 1.000.000-750.000 righe. Questo è un set di risultati di righe 6×10 sporgenti.

Probabilmente vuoi questo:

SELECT * FROM table1
LEFT JOIN table2 ON table2.number = table1.number
WHERE table2.number IS NULL

Questo restituisce le righe in table1 non presente in table2 .

Potrebbe interessarti anche FULL OUTER JOIN :

SELECT * FROM table1
FULL OUTER JOIN table2 ON table2.number = table1.number
WHERE table1.number IS NULL AND table2.number IS NULL

Questo restituisce le righe in entrambe le tabelle che non hanno una corrispondenza nell'altra tabella.