mysql查询用户每个体验id都有一行

时间:2014-04-02 17:30:51

标签: mysql sql validation

我有一个SQL问题。我有一个表格,用户可以获得他们完成的每一次体验。架构看起来类似于这个小提琴:http://sqlfiddle.com/#!2/5d6a87/4

我正在尝试编写一个查询,列出每个已经过了1-5的用户。因此,在我的示例中,它将列出用户ID:1,2和4.由于用户ID 3没有5行,因此每个用户不应列出一行。

3 个答案:

答案 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