【发布时间】:2008-09-30 07:01:27
【问题描述】:
我有一个提交表,很简单:userId,submissionGuid
我想选择表中提交超过 10 个的所有用户的用户名(简单的内连接来获取)。
我会使用嵌入式查询和 group by 来计算提交...但是有没有更好的方法(没有嵌入式查询)?
谢谢!
【问题讨论】:
标签: sql
我有一个提交表,很简单:userId,submissionGuid
我想选择表中提交超过 10 个的所有用户的用户名(简单的内连接来获取)。
我会使用嵌入式查询和 group by 来计算提交...但是有没有更好的方法(没有嵌入式查询)?
谢谢!
【问题讨论】:
标签: sql
我相信这是最简单的方法:
select userId
from submission
group by userId
having count(submissionGuid) > 10
【讨论】:
select userId, count(*)
from submissions
having count(*) > 10
group by userId
【讨论】:
SELECT
username
FROM
usertable
JOIN submissions
ON usertable.userid = submissions.userid
GROUP BY
usertable.username
HAVING
Count(*) > 1
*假设您的“用户”表是用户表,并且它有一个名为“用户名”的列
【讨论】:
我认为正确的查询是这样的(SQL Server):
SELECT s.userId, u.userName
FROM submission s INNER JOIN users u on u.userId = s.userId
GROUP BY s.userId, u.username
HAVING COUNT(submissionGuid) > 10
如果你没有 HAVING 子句:
SELECT u.userId, u.userName
FROM users u INNER JOIN (
SELECT userId, COUNT(submissionGuid) AS cnt
FROM submission
GROUP BY userId ) sc ON sc.userId = u.userId
WHERE sc.cnt > 10
【讨论】:
select userid, count(submissionGUID) as submitCount
来自提交
按用户 ID 分组,提交计数
提交次数 > 10
【讨论】: