以下SQL返回BT.Bt_Name
为L.date_back
为空的BT.Bt_Name
。我只想选择L.Bc_id
重复的SELECT BT.Bt_Name
FROM Book_Title BT INNER JOIN (
Book_Copy BC INNER JOIN Loan L ON BC.Bc_id = L.Bc_id
) ON BT.Bt_id = BC.Bt_id
WHERE L.Date_back Is NULL
GROUP BY BT.Bt_name
HAVING COUNT(L.Bc_id) >1;
COUNT(L.Bc_id)
对于L.Date_back
为空的所有记录,导致{{1}}为> 1的连接是什么?仅供参考,应返回一个(故意输入错误)。
答案 0 :(得分:0)
是的,您无意中在Book_Title
和Loan
之间创建了笛卡尔积。
试试这个:
HAVING COUNT(DISTINCT BC.Bt_id) > 1
答案 1 :(得分:0)
为什么要打扰括号?为什么不呢?
SELECT BT.Bt_Name, count(*) ct FROM Book_Title BT
INNER JOIN Book_Copy BC on BT.Bt_id = BC.Bt_id
INNER JOIN Loan L ON BC.Bc_id = L.Bc_id
WHERE L.Date_back Is NULL
GROUP BY BT.Bt_name HAVING COUNT(*) >1;
或者我有错误的结束?