Sql-Server

選擇在另一個表中無法找到所有值的 IDS

  • February 2, 2020

嘿,我對 SQL 很陌生,但我遇到了一個我無法解決的問題

我正在嘗試進行查詢以調出具有所有空值且位於另一個表中的 ID。

數據庫看起來像:

表格1

BOOK ID| User ID            
1      |   1
1      |   2
2      |   17
2      |   16
3      |   17
3      |   16
4      |   3
4      |   16

表 2

USER ID | Name
  1    | Jeff  
  2    | Bill   
  3    | Fred

期望的結果是顯示 Book ID 2 和 3,因為這兩個 ID 都只有在表 2 中找不到的使用者。

我認為這句話很清楚,使用左連接來獲取空 USER_ID 並返回那些 count = 0;

SELECT
   BOOK_ID, COUNT(USERS.USER_ID) AS USERS
FROM
   BOOKS
LEFT JOIN 
   USERS
   ON USERS.USER_ID = BOOKS.USER_ID
GROUP BY
   BOOK_ID
HAVING COUNT(USERS.USER_ID) = 0;
BOOK_ID | 使用者
------: | ----:
 2 | 0
 3 | 0

db<>在這裡擺弄

select a.bookid
from table1 a left join table2 b on a.userid = b.userid
group by a.bookid
having count(b.userid) = 0

引用自:https://dba.stackexchange.com/questions/251140