我有一个SQL问题。我有一个表格,用户可以获得他们完成的每一次体验。架构看起来类似于这个小提琴:http://sqlfiddle.com/#!2/5d6a87/4
我正在尝试编写一个查询,列出每个已经过了1-5的用户。因此,在我的示例中,它将列出用户ID:1,2和4.由于用户ID 3没有5行,因此每个用户不应列出一行。
答案 0 :(得分:0)
您想要使用的是" group by" 查询看起来像它:
select userid
from some_table
group by userid
having count(*)>=5
你也可以创造性并通过
强制实现5种不同的成就select userid
from some_table
group by userid
having count(distinct expid)>=5
关于分组的轻松阅读: http://www.w3schools.com/sql/sql_groupby.asp
祝你好运!答案 1 :(得分:0)
下面
SELECT * FROM some_table GROUP BY UserID having count(*)>= 5;
我认为它应该是这样但你的问题并非100%明确,因为你说每个ExpID都有5行。
SELECT * FROM some_table GROUP BY UserID, ExpID having count(*)>= 5;
答案 2 :(得分:0)
试试这个:
SELECT id,userid,expid FROM
some_table
GROUP BY userid
HAVING count(*)>= 5
结果:
ID USERID EXPID
1 1 1
6 2 1
13 4 1
请参阅SQL Fiddle中的结果。
您只需添加having
子句即可。阅读更多here。