Tôi cố gắng để soạn một câu lệnh SELECT cho MySQL mà chọn từ bảng A những gì không tồn tại trong bảng B. Ví dụ:Chọn từ bảng A mà không tồn tại trong bảng B
Bảng A:
+------+
| BAND |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
+------+
bảng B:
+------+
| HATE |
+------+
| 1 |
| 5 |
+------+
Vì vậy, nếu bảng A là tất cả các băng, và bảng B là ban nhạc tôi ghét, thì tôi chỉ muốn ban nhạc tôi không ghét. Vì vậy, kết quả của một lựa chọn nên là:
+------+
| BAND |
+------+
| 2 |
| 3 |
| 4 |
+------+
Làm thế nào tôi sẽ viết một lựa chọn duy nhất cho điều này? Đây là nỗ lực cuối cùng của tôi:
SELECT * FROM A LEFT JOIN B ON A.BAND = B.HATE WHERE B.HATE IS NULL;
EDIT: Dòng trên đã được sửa! Xem bình luận bên dưới ... "= NULL" so với "IS NULL".
@Michelle truy vấn của bạn có vẻ là ok. tại sao bạn nói nó không hoạt động? – Barranka
Xem nhận xét của tôi bên dưới. Đối với bất kỳ ai khác có cùng một vấn đề "IS NULL" thì không giống với "= NULL" trong MySQL. Tôi đã thử một cách và truy vấn hoạt động, cách khác nó trả về một tập rỗng. Lạ thật !!! – TSG
Không chỉ trong MySQL, mà còn trên bất kỳ phương ngữ SQL nào. Giá trị 'NULL' trong SQL có thuộc tính khác với bất kỳ giá trị nào khác, bao gồm một' NULL' khác. Do đó, bạn không thể mong đợi '= NULL' để làm việc trên một truy vấn SQL ... bạn cần sử dụng' IS NULL'. – Barranka