【问题标题】:MySQL delete duplicate rows based on row numberMySQL根据行号删除重复行
【发布时间】:2018-05-29 14:23:45
【问题描述】:

我想根据行号(没有主键)删除一些重复的行(ID 是重复的),以便之后我可以将 ID 列设为我的主键。

我当前的查询确实返回了我想要删除的正确行:

SELECT *
FROM table_name
WHERE @row_number:=@row_number NOT IN (
    SELECT * FROM (
        SELECT MIN(@row_number:=@row_number) 
        FROM table_name
        GROUP BY id
    ) x
);

但是当我尝试使用以下查询删除它们时,没有任何反应。

DELETE
FROM table_name
WHERE @row_number:=@row_number NOT IN (
    SELECT * FROM (
        SELECT MIN(@row_number:=@row_number) 
        FROM table_name
        GROUP BY id
    ) x
);

知道我在这里做错了什么吗?非常感谢您的帮助!

【问题讨论】:

    标签: mysql


    【解决方案1】:

    您可以使用它来设置主键并删除所有重复的 id:

    ALTER IGNORE TABLE `table_name` ADD PRIMARY KEY (`id`);
    

    解决方案二:

    CREATE TABLE new_table_name AS
    SELECT * FROM old_table_name GROUP BY id;
    

    【讨论】:

    猜你喜欢
    • 2011-04-21
    • 2017-08-08
    • 2023-03-21
    • 2019-05-29
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多