首页 > 解决方案 > MySql 错误 - 优先删除重复行

问题描述

预告

我叫表Test

-- Table Creation
CREATE TABLE Test(
    id integer,
    title varchar (100)
);
-- Insertion
INSERT INTO Test Values 
    (1, "Hi"), 
    (2, 'Hello'), 
    (2, "Hellew"), 
    (3, "World"), 
    (3,"Wordy");

测试台

| Id | title  |
|----|--------|
| 1  | Hi     |
| 2  | Hello  |
| 2  | Hellew |
| 3  | World  |
| 3  | Wordy  |

过程

我想要重复deleteid 基于优先级

问题

这是我得到的输出错误

ERROR 1093 (HY000) at line 5: You can't specify target table 'Test' for update in FROM clause

所需的输出

| Id | title  |
|----|--------|
| 1  | Hi     |
| 2  | Hello  |
| 3  | World  |

谢谢,

标签: mysqlsqlsql-delete

解决方案


您在这里没有明确提到什么是“优先级”。但是查看输出示例,我假设优先级是保留那些大于其他具有相似 id 的字符串。这是我的代码:

    delete a.* from Test a join Test b
    on a.id = b.id where a.title < b.title;
    select * from Test;

参考

MySQL:别名


推荐阅读