今天遇到的问题(简化):在下面这张表中,找出s_sid,s_name具有相同字段且出现次数超过两次的记录。
网友给出的语句:
SELECT *
FROM test as w
WHERE EXISTS(SELECT s_id,s_name FROM TEST WHERE s_id=W.s_id and s_name=W.s_name group by s_id,s_name having count(*)>=2)
可找出:
--------------------------------------------------------------------
group by 用法:
按照某个字段,将该字段的相同记录合并。若其它字段不同,则取第一个(是合并时的顺序还是数据库存放的顺序未知)
--------------------------------------------------------------------
having 用法:
官方解释是 :在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。
我的理解是 : select 字段A where COUNT(字段A)>3 这样是不可以的。
所以在where 后面加入 having语句: select 字段A WHERE 条件 having count(字段A)>3