我有两个表,usersreports。每个用户没有与其关联的一个,一个或多个报告,并且reports表具有一个user_id字段。

我有以下查询,我需要在每行中添加用户拥有的报告数量:

SELECT *
FROM users
LIMIT 1, 10


我是否需要使用子查询,如果需要,如何有效使用它? reports表具有成千上万的行。

最佳答案

不需要子查询:

SELECT users.user_id, COUNT(reports.user_id) AS number_of_reports
FROM users
LEFT JOIN reports ON users.userid = reports.userid
GROUP BY users.user_id


为了使查询更高效,请确保两个表中的user_id字段都有索引

注释跟进:COUNT函数不计算空值,因此对于完全没有报告的任何用户,它将返回0(按预期)(联接将为report.user_id返回NULL)。还添加了GROUP BY位,忘记了第一次。

关于php - 如何使用MySQL子查询计算外部表中的行数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2812482/

10-12 16:26