【发布时间】:2023-03-20 02:55:02
【问题描述】:
早安stackoverflownians,
我有一张非常大的桌子,两列上有重复项。意味着如果 a 行的数字在 b 行的 col1 和 col2 中重复,我应该只保留 a 行:
## table_1
col1 col2
1 10
1 10
1 10
1 11
1 11
1 12
2 20
2 20
2 21
2 21
# should return this tbl without duplication
col1 col2
1 10
1 11
1 12
2 20
2 21
我之前的代码只针对 col1,我不知道如何在两个列上查询:
CREATE TABLE temp LIKE db.table_1;
INSERT INTO temp SELECT * FROM table_1 WHERE 1 GROUP BY col1;
DROP TABLE table_1;
ALTER TABLE temp RENAME table_1;
所以我想到了:
CREATE TABLE temp LIKE db.table_1;
INSERT INTO temp(col1,col2)
SELECT DISTINCT col1,col2 FROM table_1;
then drop and rename..
但我不确定它是否能正常工作,而且 MySQL 往往不稳定,如果花费的时间太长,我将不得不停止查询,并且我的服务器再次崩溃.. T.T
我们有 200,000,000 行,并且所有行都至少有一个重复..
任何代码建议? :) 还有..需要多长时间?分钟还是小时?
【问题讨论】:
-
查看本题第一个答案;它可以帮助您找到解决方案; stackoverflow.com/questions/7105618/…
-
INSERT INTO ... SELECT DISTINCT是这样做的正确方法。如果您遇到稳定性问题,只需让您的站点/系统脱机,直到查询完成。提前计划停机时间。
标签: mysql duplicates