Mysql 获取其他表中的所有用户及其记录数

Mysql 获取其他表中的所有用户及其记录数,mysql,left-join,Mysql,Left Join,我有两个表users(user\u id,name)和license(license\u id,user\u id) 我想获取许可证表中所有用户的记录数。 这个问题似乎很简单,但我无法理解它的疑问 我试着 SELECT * FROM `users` a left join license b on a.user_id=b.user_id 但这给了我a表的所有行和b表的匹配行,而我希望a表的所有行和另一列的行数在b表中匹配 请帮助我如何获取此信息。如果需要匹配用户的数量,请使用计数和分组方式 S

我有两个表users(user\u id,name)和license(license\u id,user\u id)

我想获取许可证表中所有用户的记录数。 这个问题似乎很简单,但我无法理解它的疑问

我试着

SELECT * FROM `users` a left join license b on a.user_id=b.user_id
但这给了我a表的所有行和b表的匹配行,而我希望a表的所有行和另一列的行数在b表中匹配


请帮助我如何获取此信息。

如果需要匹配用户的数量,请使用计数和分组方式

SELECT user_id, name, count(*)
FROM `users` a 
INNER join license b on a.user_id=b.user_id
Group by user_id, name
当然,您只需要匹配的计数

select count(*) 
FROM `users` a 
INNER join license b on a.user_id=b.user_id
而是返回许可证中的数字计数

  select count(*) 
  FROM `users` a 
  LEFT join license b on a.user_id=b.user_id 
然后你可以简单地使用

  select count(*) 
  from  license 
否则,如果您想使用alto编号,则用户不需要matc,然后重试

SELECT user_id, name, ifnull(count(*), 0)
FROM `users` a 
LEFT join license b on a.user_id=b.user_id
Group by user_id, name
请尝试以下查询:

SELECT a.user_id, a.name, COUNT(b.user_id)
  FROM `users` a 
  LEFT JOIN license b ON a.user_id=b.user_id
  GROUP BY user_id, NAME;
输出:

提及


我认为,内部连接不会提供用户表的所有记录?是的,但与许可证不匹配的用户对我来说似乎毫无意义。。就你而言。。然后,如果您想更好地解释..我已经用一些建议更新了答案我希望有用是的,我需要许可证表中记录数为的users表的所有行,您的第一个查询给出了许可证表中记录数为匹配的所有行,但在同一个查询中,我希望得到计数为0的剩余用户。我尝试了这个查询“从
users
a.user\u id=b.user\u id按user\u id分组的左加入许可证b中选择一个*,count(*),但它为那些剩余的用户提供了1个计数对不起,但它给我的列名为“ifnull(count(*),0)”,值为“1”
SELECT 
  U.user_id, U.name, COUNT(L.license_id) as licenseCount
FROM `users` U
LEFT JOIN license L ON U.user_id=L.user_id
GROUP BY U.user_id;