Xin lỗi nếu có câu trả lời cho điều này, tôi đã tìm kiếm và có thể không nghĩ ra đúng từ khóa để tìm thấy nó.CHỌN những người không được tìm thấy trong IN() danh sách
Tôi có một bảng với hơn 1000 bảng (ví dụ: Khách hàng).
Tôi có một truy vấn yêu cầu chi tiết của một danh sách được biết đến của khách hàng (ví dụ bằng cách CustomerID - 1,79,14,100,123)
IN() chức năng là những gì tôi muốn sử dụng cho truy vấn.
tôi biết để tìm kiếm khách hàng phù hợp với danh sách, tôi sẽ viết:
SELECT * FROM Customers WHERE CustomerID IN (1,79,14,100,123)
Để tìm những người không nằm trong danh sách này, tôi sẽ viết
SELECT * FROM Customers WHERE CustomerID NOT IN (1,79,14,100,123)
Câu hỏi
Tôi làm cách nào để tìm danh sách Cust omers rằng nơi không trả lại hoặc không tìm thấy một trận đấu từ danh sách.
Giả sử bảng Khách hàng chỉ có (1,79,100). Sau đó, nó sẽ có nghĩa là 14 và 123 sẽ không được xuất hiện. Làm cách nào để tìm các giá trị không tìm thấy kết quả phù hợp.
Tôi đã đơn giản hóa trong ví dụ của mình. Danh sách các mục của tôi có hơn 300 ID, do đó, sử dụng điều kiện WHERE
với danh sách dài OR
sẽ rất cồng kềnh/vụng về. Tôi đã nghĩ đến việc kết hợp với tự LEFT JOIN và xác định các giá trị ghép nối NULL, sẽ là 14 và 123
Có cách tiếp cận trang nhã hơn không?
Thank-you @ Martin Smith. Điều đó đã trả lời nó! Ngoài quan tâm, bạn có biết nếu có một phiên bản tương thích SQL ANSI? – user919426
@ user919426 - 'EXCEPT' chắc chắn là ANSI SQL (mặc dù Oracle sử dụng không chuẩn' MINUS'). Tôi nghĩ rằng các nhà xây dựng giá trị bảng được bao gồm trong một số phiên bản của tiêu chuẩn là tốt. –
Điều cần biết. Cảm ơn, một lần nữa! – user919426