我是 SQL 新手,我正在嘗試在 PostgreSQL 上撰寫一個查詢,以查找銀行中每個只有在銀行有貸款而沒有賬戶的客戶的cust_ID和客戶名稱。
資料庫架構是:

結果應該只有這 3 個客戶:

我對此查詢的兩次嘗試是:
1)
(SELECT DISTINCT borrower.cust_ID, customer_name
FROM borrower, customer
where borrower.cust_ID = customer.cust_ID)
except
(SELECT DISTINCT cust_ID, account_number
FROM depositor)
我的輸出在哪里:

2)
SELECT DISTINCT borrower.cust_ID, customer_name
FROM borrower, customer
WHERE (borrower.cust_ID = customer.cust_ID) NOT IN (SELECT cust_ID
FROM depositor)
輸出為: 錯誤:運算子不存在:布爾 = 可變字符第 3 行:其中 (borrower.cust_ID = customer.cust_ID) 不在 (select c... ^ 提示:沒有運算子與給定名稱和引數型別匹配。您可能需要添加顯式型別轉換。SQL 狀態:42883 字符:117
請幫我正確查詢這個問題!謝謝!
uj5u.com熱心網友回復:
您可以使用EXISTS并NOT EXISTS應用您想要的邏輯:
SELECT c.cust_id, c.customer_name
FROM customer c
WHERE EXISTS (SELECT * FROM borrower b WHERE b.cust_id = c.cust_id)
AND NOT EXISTS (SELECT * FROM depositor d WHERE d.cust_id = c.cust_id);
或使用INand EXCEPT:
SELECT cust_id, customer_name
FROM customer
WHERE cust_id IN (SELECT cust_id FROM borrower EXCEPT SELECT cust_id FROM depositor);
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/498462.html
標籤:sql PostgreSQL 存在 除了 sql-in
