登录
首页 >  数据库 >  MySQL

mysql 的delete from where 子查询的一些限制

来源:SegmentFault

时间:2023-02-20 15:58:46 246浏览 收藏

哈喽!今天心血来潮给大家带来了《mysql 的delete from where 子查询的一些限制》,想必大家应该对数据库都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到MySQL,若是你正在学习数据库,千万别错过这篇文章~希望能帮助到你!

1.使用mysql进行delete from操作时,若子查询的 FROM 字句和更新/删除对象使用同一张表,会出现错误。
mysql> DELETE FROM 'tab' where id in (select min(id) from tag GROUP BY field1,field2 HAVING COUNT(id)>1);
error: You can't specify target table 'tab' for update in FROM clause.(不能为FROM子句中的更新指定目标表'tab')

针对“同一张表”这个限制,多数情况下都可以通过多加一层select 别名表来变通解决,像这样

DELETE FROM 'tab' where id in
(
    select id from 
    (
        select max(id) from 'tab' GROUP BY field1,field2 HAVING COUNT(id)>1
    ) ids
);

2.delete from table... 这其中table不能使用别名

  • mysql> delete from table a where a.id in (1,2);(语法错误)
  • mysql> select a.* from table a where a.id in (1,2);(执行成功)

以上就是《mysql 的delete from where 子查询的一些限制》的详细内容,更多关于mysql的资料请关注golang学习网公众号!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>