题解 | 删除emp_no重复的记录,只保留最小的id对应的记录。

在MySQL中,不能直接在一个DELETE语句的目标表(本例中的titles_test)上使用子查询从同一张表中选择数据进行更新或删除操作
我们增加了一个额外的SELECT层,把原先的子查询结果作为一个派生表(在这里被命名为temp_table)。这样就解决了直接在目标表上执行子查询的问题,使得MySQL可以正确地处理这条DELETE语句。

delete from titles_test
where id not in(
    select * from(
        select min(id)
        from titles_test
        group by emp_no
    )as temp_table
);

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务