我有一个名为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
提前致谢。
答案 0 :(得分:4)
您可以使用Having
子句避免自联接:
SELECT a.ListingKey
FROM property a
GROUP BY a.ListingKey
HAVING COUNT(a.property_id) > 1;
更新:如果您还想要复制中所有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)
上添加索引。