表:Users
, Costs
,Payments
用户可能有很多成本。成本可以有很多付款
我想获取有关用户的信息以及他们支付的所有款项的数量
此查询返回结果但需要很长时间才能运行
SELECT u.id, u.name,
(
SELECT COUNT(p.id)
FROM payments AS p
WHERE p.cost_id IN (SELECT cost_id FROM costs WHERE user_id = u.id)
) AS payments_made
FROM users as u;
我尝试了外部连接,但如果用户有多个成本,它会返回重复项
内部连接丢弃了所有没有成本的用户
让我知道这是否涵盖您想要的结果。
dbfiddle在这里
或者更好的左连接解决方案:
dbfiddle在这里