我有一个SQL表负责存储用户标记内容的实例。这是我的表:SQL Query返回表中出现X次的记录
Flagged Content
1. instance_id
2. content_id
3. user_id`
现在我想执行一个查询返回所有出现在flagged content
表中至少3
倍content_id
。但是,我不知道如何继续。
我有一个SQL表负责存储用户标记内容的实例。这是我的表:SQL Query返回表中出现X次的记录
Flagged Content
1. instance_id
2. content_id
3. user_id`
现在我想执行一个查询返回所有出现在flagged content
表中至少3
倍content_id
。但是,我不知道如何继续。
可以使用group by
得到计数:
select content_id
from flagged_content fc
group by content_id
having count(*) >= 3;
如果你想原始记录,然后用join
:
select fc.*
from flagged_content fc join
(select content_id
from flagged_content fc
group by content_id
having count(*) >= 3
) c
on fc.content_id = c.content_id;
SELECT content_id
FROM flagged_content
GROUP BY content_id
HAVING COUNT(*) >= 3
SELECT CONTENT_ID FROM flagged_content GROUP BY的content_id HAVING count(instance_id)> 3;
或用主键/非空列替换instance_id。 (不知道计数(*)是否适用于所有RDBMS)
没有尝试显示。 –
可能重复的[SQL查询查找记录where count> 1](http://stackoverflow.com/questions/7151401/sql-query-for-finding-records-where-count-1) – Jeff