未定义列的 Where 子句

Where clause for undefined columns

我正在编写一个查询,但 运行 遇到了问题。

select name, address, count(BL.card_no) 
from Book_Loans BL 
inner join Borrower B on BL.card_no = B.card_no 
where count(BL.card_no) > 1 group by name;

这不起作用,因为我不能使用 "where count(BL.card_no) > 1",因为它说 "Invalid use of group function." 但我需要确保只显示大于 1 的卡号,我还能怎么做?

您必须将谓词放在 HAVING 子句中:

select name, address, count(BL.card_no) 
from Book_Loans BL 
inner join Borrower B on BL.card_no = B.card_no 
group by name
having count(BL.card_no) > 1;

聚合函数使用 having 而不是 where

select name, address, count(BL.card_no) 
from Book_Loans BL 
inner join Borrower B on BL.card_no = B.card_no 
group by name
having  count(BL.card_no) > 1;