我有一个名为property的表,其结构如下。

property_id | ListingKey | name
1             abkjhj-123   abc
2             abkjhj-123   abc1
3             abkjhj-124   abc4


我想要基于ListingKey的重复记录。我写此查询,但不确定这是否正确?

SELECT a.property_id
FROM property a
INNER JOIN property b ON a.property_id = b.property_id
WHERE a.ListingKey <> b.ListingKey


提前致谢。

最佳答案

您可以使用Having子句避免自我连接:

SELECT a.ListingKey
FROM property a
GROUP BY a.ListingKey
HAVING COUNT(a.property_id) > 1;


SqlFiddle

更新:如果您还希望在重复项中列出所有ID,请执行以下操作:

SELECT a.ListingKey, GROUP_CONCAT(a.property_id)
FROM property a
GROUP BY a.ListingKey
HAVING COUNT(a.property_id) > 1;

10-06 04:01