select一个字段的数量大于1的地方

我想要做这样的事情:

SELECT * FROM db.table WHERE COUNT(someField) > 1 

我怎么能在MySql中实现这一点?

使用HAVING而不是WHERE子句进行聚合结果比较。

以面值查询:

 SELECT * FROM db.table HAVING COUNT(someField) > 1 

理想情况下,在HAVING子句中应该有一个用于正确评估的GROUP BY ,但是MySQL确实允许GROUP BY中的隐藏列 。

这是否准备对someField进行唯一约束? 看起来应该是…

你也可以使用自连接来做到这一点:

 SELECT t1.* FROM db.table t1 JOIN db.table t2 ON t1.someField = t2.someField AND t1.pk != t2.pk 
 SELECT username, numb from( Select username, count(username) as numb from customers GROUP BY username ) as my_table WHERE numb > 3 

单程

 SELECT t1.* FROM db.table t1 WHERE exists (SELECT * FROM db.table t2 where t1.pk != t2.pk and t1.someField = t2.someField) 

正如OMG Ponies所说的那样,有条件的是你所追求的。 但是,如果您希望获得离散行而不是摘要(“有”创build摘要),则不能在单个语句中完成。 在这种情况下,你必须使用两个语句。

我在Sql中的两个表之间给出了一个Group By的例子:

Select cn.name,ct.name,count(ct.id) totalcity from city ct left join country cn on ct.countryid = cn.id Group By cn.name,ct.name Having totalcity > 2


对我来说,没有一个团队只是返回空的结果。 所以我想有一个团体由有声明是非常重要的

还应该提到,“PK”应该是一个关键领域。 自我join

 SELECT t1.* FROM db.table t1 JOIN db.table t2 ON t1.someField = t2.someField AND t1.pk != t2.pk 

由比尔·卡尔文给你所有的logging是重复的,这是我想要的。 因为有些人有两个以上,你可以多次获得相同的logging。 我写了所有到相同的字段的另一个表,通过关键字段抑制来摆脱相同的logging。 我试过了

SELECT * FROM db.table HAVING COUNT(someField) > 1

以上第一。 从它返回的数据只给出一个副本,less于这个给你的一半,但如果这是你想要的只是计数好。