próbuję komponować SELECT dla MySQL, który wybrać z stole, co nie istnieje w tabeli B. Na przykład:Wybierz z tabeli A, które nie istnieje w tabeli B
Tabela A:
+------+
| BAND |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
+------+
Tabela B:
+------+
| HATE |
+------+
| 1 |
| 5 |
+------+
Więc jeśli tabela a wszystkie zespoły, a tabela B to zespoły, których nienawidzę, to chcę tylko zespoły nie nienawidzę. Tak więc wynik wyboru powinien być:
+------+
| BAND |
+------+
| 2 |
| 3 |
| 4 |
+------+
Jak napisać do tego celu pojedyncze wybory? Oto moja ostatnia próba:
SELECT * FROM A LEFT JOIN B ON A.BAND = B.HATE WHERE B.HATE IS NULL;
EDYCJA: Powyższa linia została naprawiona! Zobacz komentarze poniżej ... "= NULL" versus "IS NULL".
@Michelle zapytanie wydaje się być w porządku. dlaczego mówisz, że to nie działa? – Barranka
Zobacz mój komentarz poniżej. Dla każdego, kto ma taki sam problem, "IS NULL" nie jest tym samym, co "= NULL" w MySQL. Próbowałem w jedną stronę, a zapytanie działa, w przeciwnym razie zwraca pusty zestaw. Dziwne!!! – TSG
Nie tylko w MySQL, ale w dowolnym dialekcie SQL. Wartość 'NULL' w SQL ma właściwość bycia różną od jakiejkolwiek innej wartości, włączając w to inny' NULL'. Z tego powodu nie możesz oczekiwać, że '= NULL' będzie działał na zapytaniu SQL ... musisz użyć' IS NULL'. – Barranka