我有一个MySQL表,有大约30k的记录,其中2k我估计是重复的。
如何制作查询以显示共享以下所有列STREET_NUMBER,STREET_NAME,UNIT_NUMBER,ZIP_CODE以及另一个名为MLS_ID的列不相同的重复项?
我只想看到完全匹配且MLS_ID不同的记录。
答案 0 :(得分:1)
您可以执行分组操作,并且只采用计数大于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
是唯一的非分组列。
答案 1 :(得分:1)
试试这个(未经测试):
SELECT * FROM table t1 INNER JOIN table t2
USING(STREET_NUMBER, STREET_NAME, UNIT_NUMBER, ZIP_CODE)
WHERE t1.MLS_ID != t2.MLS_ID;
答案 2 :(得分:1)
我认为这应该有效(未经测试)
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