我試圖通過大表中的幾列(接近18 000行)搜索重複的行。問題是,查詢需要大量的時間,我想這一點:在MySQL中通過幾列獲取重複的行
SELECT * FROM table_name a, table_name b
WHERE a.col1 = b.col1
AND a.col2 = b.col2
AND a.col3 = b.col3
AND a.col4 = b.col4
AND a.id <> b.id
這:
SELECT *
FROM table_name
WHERE col1 IN (
SELECT col1
FROM table_name
GROUP BY col1
HAVING count(col1) > 1
)
AND col2 IN (
SELECT col2
FROM table_name
GROUP BY col2
HAVING count(col2) > 1
)
AND col3 IN (
SELECT col3
FROM table_name
GROUP BY col3
HAVING count(col3) > 1
)
AND col4 IN (
SELECT col4
FROM table_name
GROUP BY col4
HAVING count(col4) > 1
)
他們都工作,但是太慢了。有任何想法嗎?
我不明白爲什麼Siphon的'count by> 1'嘗試不適合你。你能發佈樣本數據和期望的結果嗎? – fancyPants
他想要返回每一行。小組將會給你一個重複的,但不是其他相同的行。所以如果4行被分組在一起,那麼只有1個會被分組返回。這不適用於所有人,至少不適合他。 – Siphon