我有一个MySQL表,其中大约有30k条记录,其中2k条是重复的。
如何创建一个查询来显示重复项,这些重复项共享以下所有列STREET_NUMBER、STREET_NAME、UNIT_NUMBER、ZIP_CODE,但另一个名为MLS_ID的列却不相同?
我只想查看完全匹配且MLS_ID不同的记录。
发布于 2011-12-10 02:27:38
我认为这应该可以工作(未经测试)
SELECT *
FROM Table1 T
INNER JOIN
(
SELECT STREET_NUMBER, STREET_NAME, UNIT_NUMBER, ZIP_CODE
FROM Table1 T1
GROUP BY STREET_NUMBER, STREET_NAME, UNIT_NUMBER, ZIP_CODE
HAVING COUNT(DISTINCT MLS_ID) > 1
) T2 ON T.STREET_NUMBER = T2.STREET_NUMBER AND T.STREET_NAME = T2.STREET_NAME AND T.UNIT_NUMBER = T2.UNIT_NUMBER AND T.ZIP_CODE = T2.ZIP_CODE发布于 2011-12-10 02:17:23
您可以执行group-by,并且只获取计数大于1的那些组(即存在重复的组):
select
<grouping columns> -- put STREET_NUMBER, STREET_NAME, etc. here
from
(select distinct * from <tablename>)
group by
<grouping columns> -- and here!
having
count(*) > 1只是不要把MLS_ID放在group-by子句中。这假设MLS_ID是唯一的非分组列。
发布于 2011-12-10 02:18:59
试试这个(未测试):
SELECT * FROM table t1 INNER JOIN table t2
USING(STREET_NUMBER, STREET_NAME, UNIT_NUMBER, ZIP_CODE)
WHERE t1.MLS_ID != t2.MLS_ID;https://stackoverflow.com/questions/8449897
复制相似问题