Answers:
使用HAVING
,而非WHERE
子句进行汇总结果比较。
以面值查询:
SELECT *
FROM db.table
HAVING COUNT(someField) > 1
理想情况下,应该GROUP BY
在HAVING
子句中定义适当的评估值,但是MySQL确实允许GROUP BY的隐藏列 ...
这是否是在为唯一的约束做准备someField
?看起来应该是...
someField
值,则返回整个表;否则,将返回一个空结果集。
干得好:
SELECT Field1, COUNT(Field1)
FROM Table1
GROUP BY Field1
HAVING COUNT(Field1) > 1
ORDER BY Field1 desc
还应该提到的是,“ pk”应该是一个关键字段。自我加入
SELECT t1.* FROM db.table t1
JOIN db.table t2 ON t1.someField = t2.someField AND t1.pk != t2.pk
作者:Bill Karwin提供的所有记录都是重复的,这正是我想要的。因为有些记录有两个以上,所以您可以多次获得相同的记录。我将所有内容写入具有相同字段的另一个表,以通过抑制关键字段来摆脱相同的记录。我试过了
SELECT * FROM db.table HAVING COUNT(someField) > 1
以上第一。从它返回的数据仅提供重复项之一,不到给您的重复项的1/2,但是如果您想要的话,那么计数就很好。
GROUP BY
肯定需要(除非这是一些MySQL非标准的东西)?