SELECT users.name, (select count(*) from orders where orders.users_id = users.id) as total
from users
但更好的方法是加入。
SELECT users.name, IFNULL(COUNT(orders.id), 0) AS total
FROM users
LEFT JOIN orders ON orders.users_id = users.id
GROUP BY users.id
实际上,最好使用聚合的子查询进行连接,而不是在连接后进行聚合:
SELECT u.name, IFNULL(o.total, 0) AS total
FROM users as u
LEFT JOIN (
SELECT users_id, COUNT(*) AS total
FROM orders
GROUP BY users_id) AS o ON u.id = o.users_id
3条答案
按热度按时间qacovj5a1#
您可以使用相关的子查询来完成。
但更好的方法是加入。
实际上,最好使用聚合的子查询进行连接,而不是在连接后进行聚合:
xwbd5t1u2#
您也可以这样做,在这种情况下,只有在订单上有记录时才会返回:
jei2mxaa3#
关键是一个团队: