首页新闻找找看学习计划

sql group by

0
[已解决问题] 解决于 2015-10-10 14:04

假设我有一个表A,里面30列,假设有个列叫Name,可重复出现,现在我要显示Name出现3次以上的数据显示出来(显示全部信息,也就是30列数据)怎么做?列少可以select Name from A having count(name)>3,但是我现在30列的话,总不能在group by里面把30列都弄进去吧?

点燃寂寞青春的主页 点燃寂寞青春 | 菜鸟二级 | 园豆:202
提问于:2015-10-10 11:51
< >
分享
最佳答案
0

1楼的2条语句都没有 DISTINCT 的作用. 

SELECT * FROM TABLEA WHERE ID IN ( SELECT MAX(ID) FROM TABLEA GROUP BY ClassID HAVING COUNT(Name) > 3 )
奖励园豆:5
咖菲猫 | 初学一级 |园豆:28 | 2015-10-10 12:09
SELECT * FROM TABLEA WHERE ID IN ( SELECT MAX(ID) FROM TABLEA GROUP BY Name HAVING COUNT(Name) > 3 )

上面那条GROUP BY 的字段应该是 Name

咖菲猫 | 园豆:28 (初学一级) | 2015-10-10 12:10

@咖菲猫: 大神,你能否先测试下?一条记录都出不来

点燃寂寞青春 | 园豆:202 (菜鸟二级) | 2015-10-10 12:53
其他回答(1)
0

 select a.*

from a inner join (select Name from A group by Name having count(name)>3) b on a.name=b.name

或者

 select a.*

from a where name in (select Name from A group by Name having count(name)>3)

清海扬波 | 园豆:847 (小虾三级) | 2015-10-10 11:54

大神,你能否先测试下?一条记录都出不来

支持(0) 反对(0) 点燃寂寞青春 | 园豆:202 (菜鸟二级) | 2015-10-10 12:52

@点燃寂寞青春: 

select Name from A group by Name having count(name)>3这里面有数据的话,就不应该存在查不出来的。还有链接条件是不是name,这里只是给你一个提示,比如2楼说的,去重的问题,这里就没考虑。

支持(0) 反对(0) 清海扬波 | 园豆:847 (小虾三级) | 2015-10-10 14:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册