mysql显示每行中其他表的行数

Zal*_*oza 6 mysql select count

select `personal`.`id` AS `id`,
`personal`.`name` AS `name`,
(select count(visit.id) 
      from visit,personal 
        where visit.user_id=personal.id) as count 
from personal;
Run Code Online (Sandbox Code Playgroud)

我试图让所有用户和他们所做的访问次数.

我得到的结果是所有用户,但count列包含相同的值(不是特定于该行id).

我在这做错了什么?如何告诉mysql用户这个行id?

是复合选择最佳方式还是有更好的方法?

Qua*_*noi 20

SELECT  p.id, p.name, COUNT(v.user_id)
FROM    personal p
LEFT JOIN
        visit v
ON      v.user_id = p.id
GROUP BY
        p.id
Run Code Online (Sandbox Code Playgroud)

您当然也可以使用subselect(例如,如果您有ANSI GROUP BY兼容性):

SELECT  p.id, p.name,
        (
        SELECT  COUNT(*)
        FROM    visit v
        WHERE   v.user_id = p.id
        )
FROM    personal p
Run Code Online (Sandbox Code Playgroud)