最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

mysql中错误:1093-Youcan’tspecifytargettableforupdateinFROMclause的解决方法

来源:懂视网 责编:小采 时间:2020-11-09 20:39:47
文档

mysql中错误:1093-Youcan’tspecifytargettableforupdateinFROMclause的解决方法

mysql中错误:1093-YoucantspecifytargettableforupdateinFROMclause的解决方法:发现问题 最近在处理一些数据库中数据的时候,写了下面的这一条sql语句: UPDATE f_student SET school_id = 0 WHERE id > ( SELECT id FROM f_student WHERE school_id = M LIMIT 1 ) AND id < ( ( SEL
推荐度:
导读mysql中错误:1093-YoucantspecifytargettableforupdateinFROMclause的解决方法:发现问题 最近在处理一些数据库中数据的时候,写了下面的这一条sql语句: UPDATE f_student SET school_id = 0 WHERE id > ( SELECT id FROM f_student WHERE school_id = M LIMIT 1 ) AND id < ( ( SEL

发现问题

最近在处理一些数据库中数据的时候,写了下面的这一条sql语句:

UPDATE f_student
SET school_id = 0
WHERE
 id > (
 SELECT
 id
 FROM
 f_student
 WHERE
 school_id = M
 LIMIT 1
 )
AND id < (
 (
 SELECT
 id
 FROM
 f_student
 WHERE
 school_id = M
 LIMIT 1
 ) + N
)

上面的sql是想将某个区间的数据进行修改,但是放到测试环境下一跑,报下面的错误:

[Err] 1093 – You can't specify target table ‘f_student' for update in FROM clause

意思很显而易见了,说不能对进行查询操作的表进行update操作,也就说我们的where条件中进行了子查询,并且子查询也是针对需要进行update操作的表的,mysql不支持这种查询修改的方式。

解决方法

上网查了一下,针对这种问题可以通过”绕”的方式进行实现,下面看sql语句。

UPDATE f_student SET school_id = 0 WHERE
 id > 
 (
 SELECT id FROM ( 
 SELECT id FROM f_student WHERE school_id = M LIMIT 1 
 ) AS temp 
 )
 AND id <
 (
 (
 SELECT id FROM ( 
 SELECT id FROM f_student WHERE school_id = M LIMIT 1 
 ) AS temp_1 
 ) + N
 )

ok,完全没有问题。上面的sql相比于之前的sql只是在取id的时候绕了一下,通过一个子查询的方式获取到id,而不是直接进行获取。

总结

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

mysql中错误:1093-Youcan’tspecifytargettableforupdateinFROMclause的解决方法

mysql中错误:1093-YoucantspecifytargettableforupdateinFROMclause的解决方法:发现问题 最近在处理一些数据库中数据的时候,写了下面的这一条sql语句: UPDATE f_student SET school_id = 0 WHERE id > ( SELECT id FROM f_student WHERE school_id = M LIMIT 1 ) AND id < ( ( SEL
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top