MySQL中delete语句的⼦查询限制场景⼀
delete from student where id = (select max(id) from student);
[Err] 1093 - You can't specify target table 'student' for update in FROM clause
mysql中delete语句描述: 如果⼦查询的 from ⼦句和更新、删除对象使⽤同⼀张表,会出现上述错误。
解决⽅法: 通过给 from ⼦句中的结果集起别名。
delete from student where id = (select n.max_id from (select max(id) as max_id from student) as n);
上述情况对于 in ⼦句也适⽤
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
解决⽅法同上:
delete from student where id in (select n.id from (select id from student where id > 30) as n);
场景⼆
delete from student m where m.id = 1;
[Err] 1064 - You have an error in your SQL syntax;
描述: delete from table 这样的句⼦中 table 不能使⽤别名。
解决⽅法:去掉别名:
delete from student where id = 1;
Whatever is worth doing is worth doing well.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论