在mysql中查找重复记录

时间:2014-10-21 10:22:21

标签: php mysql

我有一个名为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

提前致谢。

2 个答案:

答案 0 :(得分:4)

您可以使用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;

答案 1 :(得分:0)

您的查询不正确。这是另一种方法:

select p.*
from property p
where exists (select 1
              from property p2
              where p2.listingkey = p.listingkey and p2.property_id <> p.property_id
             );

如果您关心效果,请在property(listingkey, property_id)上添加索引。

相关问题