前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >MySQL 中 delete 语句的子查询限制

MySQL 中 delete 语句的子查询限制

作者头像
用户1212940
发布于 2022-04-13 07:28:45
发布于 2022-04-13 07:28:45
3.7K00
代码可运行
举报
文章被收录于专栏:LambdaLambda
运行总次数:0
代码可运行

场景一

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
delete from student where id = (select max(id) from student);

[Err] 1093 - You can't specify target table 'student' for update in FROM clause
描述: 如果子查询的 from 子句和更新、删除对象使用同一张表,会出现上述错误。

解决方法: 通过给 from 子句中的结果集起别名。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
delete from student where id = (select n.max_id from (select max(id) as max_id from student) as n);

上述情况对于 in 子句也适用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
delete from student where id in (select id from student where id > 30);
[Err] 1093 - You can't specify target table 'student' for update in FROM clause
解决方法同上:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
delete from student where id in (select n.id from (select id from student where id > 30) as n);

场景二

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
delete from student m where m.id = 1;

[Err] 1064 - You have an error in your SQL syntax;
描述: delete from table 这样的句子中 table 不能使用别名。

解决方法:去掉别名:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
delete from student where id = 1;
Whatever is worth doing is worth doing well.
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/09/28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MySQL DELETE 语句
昨天介绍了 MySQL 数据库 UPDATE 更新的用法,今天来讲解下 DELETE 语句。
用户10358987
2024/04/23
1800
MySQL DELETE 语句
MySQL:DQL 数据查询语句盘点
常用的语句关键字有:SELECT、FROM、WHERE、ORDER BY、HAVING、ASC|DESC
栗筝i
2022/12/01
1.6K0
【MySQL 系列】MySQL 语句篇_DML 语句
DML(Data Manipulation Language),即数据操作语言,用于操作数据库对象中所包含的数据。常用关键字包括:插入(INSERT)、更新(UPDATE)、删除(DELETE)。
栗筝i
2024/03/19
4430
【MySQL 系列】MySQL 语句篇_DML 语句
8种MySQL常见新手SQL错误用法详解
分页查询是最常用的场景之一,但也通常也是最容易出问题的地方。比如对于下面简单的语句,一般 DBA 想到的办法是在 type, name, create_time 字段上加组合索引。这样条件排序都能有效的利用到索引,性能迅速提升。
猫头虎
2024/04/08
5720
子查询注意事项&semi-join(2)—mysql基于规则优化(四十五)
前面说了mysql会吧一些冗余的sql语句查询优化重写,比如多于的括号,比如有的外连接其实跟内连接类似,可以优化查询表的顺序。子查询又分为相关和不相关子查询,如果子查询过滤条件里有外层查询的参数,则是相关子查询,反之则是不相关子查询。Any函数就代表只要有一个就行,最小的,all代表必须所有的都满足这个条件,所以必须最大的也满足。当我们判断子查询里是否存在的时候,则用exists判断,有则返回true。
用户9919783
2022/07/26
6390
MySQL 的更新语句
本文将和大家分享 MySQL 更新语句的一些小众语法,及笔者在使用多表关联更新遇到的一些问题。
白日梦想家
2021/01/13
1.5K0
MySQL 的更新语句
MySQL报错1093 - You can't specify target table 't' for update in FROM clause, Time: 0
1093 - You can't specify target table 't' for update in FROM clause, Time: 0
JaneYork
2023/10/11
2840
MySQL报错1093 - You can't specify target table 't' for update in FROM clause, Time: 0
数据库操作指南:掌握CRUD和高级查询技巧,轻松实现数据操作
这里推荐一篇实用的文章:《TCP 和 UDP 的区别:解析网络传输协议》,作者:【一杯茶Ja】。
Lion Long
2024/11/23
1450
数据库操作指南:掌握CRUD和高级查询技巧,轻松实现数据操作
解决MySQL错误:You can‘t specify target table ‘xxx‘ for update in FROM clause
在编写MySQL的UPDATE或DELETE语句时,如果子查询中直接引用了要操作的目标表,可能会遇到一个常见的错误: You can’t specify target table ‘xxx’ for update in FROM clause。 这个错误让许多开发者感到困惑。本文将深入分析其原因,并提供多种解决方案。
冬天vs不冷
2025/02/20
1860
学习数据库必会知识点-索引-以及索引的巧妙用法
MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。
Java编程指南
2019/08/05
4500
这些SQL错误用法,如果经常犯,说明你的水平还很low...
今天来分享几个MySQL常见的SQL错误(不当)用法。我们在作为一个初学者时,很有可能自己在写SQL时也没有注意到这些问题,导致写出来的SQL语句效率低下,所以我们也可以自省自检一下。
程序员白楠楠
2020/11/29
8490
MySQL-Select语句高级应用
本文介绍了MySQL数据库的一些基本概念和常用命令,包括创建数据库、创建表、插入数据、查询数据、更新数据和删除数据等。同时,还介绍了MySQL中的各种约束,如主键约束、外键约束和唯一约束等。此外,还介绍了MySQL的事务和锁定机制,以及如何使用MySQL进行多用户并发操作。最后,还介绍了MySQL的性能调优和故障恢复等方面的知识。
惨绿少年
2017/12/27
4K0
MySQL-Select语句高级应用
【随笔小记】MySQL基础学习
数据分析无法离开SQL这一重要的工具,经过十天时间的学习,并完全以MySQL工具对上一节的数据分析岗位数据进行了分析,加强了操作训练,对这一工具使用有了基本的经验。本着以输出为手段检验学习效果,以温故而知新,把MySQL基础知识系统梳理。
Balliol Chen
2022/04/24
8200
【随笔小记】MySQL基础学习
mysql数据库语句
如果数据库中存在相同主键的数据,replace的作用相当于修改操作;如果数据库中不存在相同主键的数据,replace相当于插入操作。
灯珑LoGin
2022/10/31
4.6K0
【MySQL】详解MySQL中表的基本插入、删除、查询、修改语句
由于 主键 或者 唯一键 对应的值已经存在而导致插入失败的时候,如果我们想说我们要插入的这条记录无论主键或者是唯一键冲突都帮我完成插入,可以选择性的进行同步更新操作语法。
用户10923276
2024/10/26
2950
MySQL - 8种常见的SQL错误用法
前言:MySQL在2016年仍然保持强劲的数据库流行度增长趋势。越来越多的客户将自己的应用建立在MySQL数据库之上,甚至是从Oracle迁移到MySQL上来。但也存在部分客户在使用MySQL数据库的过程中遇到一些比如响应时间慢,CPU打满等情况。现将《ApsaraDB专家诊断报告》中出现的部分常见SQL问题总结如下,供大家参考。 1. LIMIT 语句 分页查询是最常用的场景之一,但也通常也是最容易出问题的地方。比如对于下面简单的语句,一般 DBA 想到的办法是在 type, name, create_t
数据和云
2018/03/07
1.6K0
MySQL - 8种常见的SQL错误用法
mysql必备语句
1,没有数据库,使用磁盘文件存储数据; 2, 层次结构模型数据库; 3,网状结构模型数据库; 4,关系结构模型数据库:使用二维表格来存储数据; 5,关系-对象模型数据库; MySQL就是关系型数据库!
cherishspring
2019/10/14
12.7K0
【重学 MySQL】四十四、相关子查询
在 MySQL 中,相关子查询(也称为相关子查询或关联子查询)是一种特殊类型的子查询,其执行依赖于外部查询的当前行值。这意味着相关子查询在外部查询的每一行上都会重新执行一次,并且可以使用外部查询的列值。
用户11332765
2024/10/28
1870
【重学 MySQL】四十四、相关子查询
MySQL子查询
在 MySQL 中,子查询(Subquery)是指在一个 SQL 查询中嵌套的另一个 SQL 查询。子查询可以在 SELECT、INSERT、UPDATE 或 DELETE 语句中使用,通常用于实现复杂的查询条件、过滤、聚合等操作。
是山河呀
2025/01/26
1200
MySQL 子查询
子查询也称为内查询(Inner Query),必须位于括号之中。包含子查询的查询称为外查询(Outer Query)。子查询支持多层嵌套,也就是子查询可以包含其他子查询。
恋喵大鲤鱼
2023/10/12
3200
相关推荐
MySQL DELETE 语句
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验