与MySQL不同的对立面

时间:2011-09-14 05:26:32

标签: mysql

我想知道sql中是否存在“select distinct”的相反情况,这样我就可以用来从只重复多次的表中获取值。

谢谢

3 个答案:

答案 0 :(得分:23)

select some_column, count(*)
from some_table
group by 1
having count(*) > 1;

在像mysql这样的数据库上,您甚至可以省略选择count(*)以保留 列值:

select some_column
from some_table
group by 1
having count(*) > 1;

答案 1 :(得分:7)

您需要group by having子句,例如:

select person, count(friends)
from people
group by person
having count(friends) > 1

这会给你一份所有人和他们的朋友数的清单,除了那些只有他们的母亲结识的可怜的悲伤鞋底,或者更糟糕的是,他们的母亲不是甚至 :-)

在这种情况下,您必须使用having而不是where,因为前者在分组后进行过滤,而后者在之前进行过滤,并且您没有像{{1这样的集合函数的信息分组后直到

答案 2 :(得分:1)

我正在为多对多连接情况寻找类似的东西,我希望显示两个表中存在多少重复项。 count(distinct col)并不是正确的解决方案,因为'1'的结果表明该列确实有重复,但没有说多少。我使用的“不同的相反”是使用count(*):(count(*) - count(distinct col)+1)的反转,它完成了工作。