您可以嵌套子查询做到这一点:
select u.user_id, count(*) as numusers,
(SELECT COUNT(user_id), FROM visitors v WHERE v.user_id = u.user_id) as NumVisitors,
(SELECT SUM(amount) FROM visitors v WHERE v.user_id = u.user_id) as VisitorAmount,
(SELECT COUNT(user_id) FROM sales s WHERE s.user_id = u.user_id) as NumSales
from users u
group by u.user_id;
您也可以通过加入预先汇总查询做到这一点:
select u.user_id, v.NumVisitors, v.VisitorAmount, s.NumSales
from (select u.user_id, count(*) as NumUsers
from users u
group by u.user_id
) u left outer join
(select v.user_id, count(user_id) as NumVisitors, sum(amount) as VisitorAmount
from visitors v
group by v.user_id
) v
on u.user_id = v.visitor_id left outer join
(select s.user_id, count(user_id) as NumSales
from sales s
group by s.user_id
) s
on s.user_id = u.user_id;
莫非你请发布几行预期的输出结果? – kkuilla
如果你想从多个表中选择数据,你可以使用JOIN。但的确,发布一些你想要的输出数据。 – JeroenJK