计算一对多关系中有多少项

时间:2018-08-23 02:15:00

标签: sql postgresql

我有一张这样的桌子:

books(id, name, category) book_pages(id, book_id)

我想获取与book_page相关联的图书数量。(可能有没有书页的图书)。

我的第一个本能是,但是它返回很多行。

SELECT count(*) as count_table 
FROM books b
GROUP BY b.id 
HAVING ( (SELECT count(*) FROM book_pages bp WHERE bp.book_id = b.id) > 0 )

抱歉,我确定它在Google的某个地方,但不知道在哪里找。

1 个答案:

答案 0 :(得分:1)

我只会使用exists

select count(*)
from books b
where exists (select 1 from book_pages bp where bp.book_id = b.id);