Sql 简单数据库查询
我有两个表,用户和类。我需要用用户ID显示每个用户的类数,我还必须显示这些用户。。没有课。怎么做 我认为子选择可能是实现这一点最简单的方法Sql 简单数据库查询,sql,Sql,我有两个表,用户和类。我需要用用户ID显示每个用户的类数,我还必须显示这些用户。。没有课。怎么做 我认为子选择可能是实现这一点最简单的方法 SELECT Users.id, Users.username, COUNT(*) AS classes FROM Users LEFT OUTER JOIN Classes ON User.fk_class_id = Classes.id GROUP BY Users.id, Users.username SELECT U.id,
SELECT Users.id, Users.username, COUNT(*) AS classes
FROM Users
LEFT OUTER JOIN Classes ON User.fk_class_id = Classes.id
GROUP BY Users.id, Users.username
SELECT U.id, numClasses = (SELECT COUNT(1) FROM classes WHERE userID = U.id)
FROM Users U
按class.id分组在大多数数据库上都会返回错误,因为users.username不在没有聚合函数的组中。这相当于Dex答案中的左JOIN,尽管Dex的效率更高,这取决于优化器您是对的,我没有遵循左外连接返回多行计数的逻辑,这是我的新手错误。出于某种原因,我认为它会为每个类返回用户,但它不会。
select a.user_name, a.user_id, count(b.class_name)
from user as a
left join class as b
on a.class_id = b.id