發布者表

書桌

這些是我的 SQL 查詢中的 2 個表,我想找出尚未出版任何書籍的出版商
我使用 SQL Server,我使用了:
SELECT PublisherID
FROM Publisher
WHERE PublisherID NOT IN (SELECT PublisherID FROM Book);
但它不起作用。難道我做錯了什么?
這是此查詢 結果表的結果

uj5u.com熱心網友回復:
您必須PublisherID IS NOT NULL在子查詢中使用條件。您的NULL記錄正在回傳false所有行。
SELECT PublisherID
FROM Publisher
WHERE PublisherID NOT IN (SELECT PublisherID FROM Book WHERE PublisherID IS NOT NULL);
或者,您可以使用LEFT JOIN并添加條件WHERE b.PublisherID IS NULL。
SELECT *
FROM Publisher p
LEFT JOIN Book b
ON b.PublisherID = p.PublisherID
WHERE b.PublisherID IS NULL
要找出出版超過 1 本書的出版商,您可以使用&GROUP BY如下所示。HAVINGIN
SELECT PublisherID
FROM @Publisher
WHERE PublisherID IN (
SELECT PublisherID
FROM @Book
WHERE PublisherID IS NOT NULL
GROUP BY PublisherID
HAVING COUNT(PublisherID) > 1
);
uj5u.com熱心網友回復:
NOT IN當NULL涉及值時,可能會回傳不正確的結果。而是使用NOT EXISTS
SELECT p.PublisherID
FROM Publisher p
WHERE NOT EXISTS (SELECT 1
FROM Book b
WHERE b.PublisherID = p.PublisherID
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/476862.html
標籤:sql服务器
上一篇:SQL查詢排除某天某用戶
