如何以优化的方式在子查询中选择COUNT
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何以优化的方式在子查询中选择COUNT相关的知识,希望对你有一定的参考价值。
我有一个关于mysql数据库中子查询计数的问题。假设我有一个book
表,有author_id
和author
表与id
和name
。我想获得作者列表,其中包含每位作者的书籍数量。所以我使用这个查询:
SELECT a.id as id, a.name as name,
(SELECT COUNT(*) FROM book b WHERE b.author_id = a.id) as count
From author a
这没有任何问题。但我想知道,这个解决方案是否是针对此类示例的最佳解决方案?如果没有,这些问题有没有更好的解决方法?
感谢您的关注。
答案
您可以使用join
和group by
,因为在计算每位作者撰写的书籍数量时,您需要汇总数据。
SELECT a.id AS id, a.name AS name, count(b.id) AS `count` FROM author a
LEFT JOIN BOOK b ON b.author_id = a.id
GROUP BY a.id, a.name;
使用left join
会更好,如果不是所有作者都在书表中有书,否则inner join
将是最佳的INNER JOIN vs LEFT JOIN performance in SQL Server
以上是关于如何以优化的方式在子查询中选择COUNT的主要内容,如果未能解决你的问题,请参考以下文章