mysql出現You can’t specify target table for update in FROM clause


 

在mysql執行下面語句時報錯:
 1 You can’t specify target table for update in FROM clause 
 2  
 3 UPDATE edu_grade_hgm_1
 4 SET exam_natures_new = '2'
 5 WHERE
 6 (outid, course_no) IN (
 7 SELECT
 8 a.outid,
 9 a.course_no
10 FROM
11 edu_grade_hgm_1 a
12 INNER JOIN edu_grade b ON a.outid = b.outid
13 AND a.course_no = b.course_no
14 )
15 AND exam_natures_new IS NULL;

 

 
括號里的子查詢和外面的upadate語句均沒錯,但加在一起便報錯了。
那是因為那串英文錯誤提示就是說, 不能先select出同一表中的某些值,
再update這個表(在同一語句中)
 
 
 
 
所以先在子查詢外面再套一層,修改sql如下:
 1 UPDATE edu_grade_hgm_1
 2 SET exam_natures_new = '2'
 3 WHERE
 4 (outid, course_no) IN (
 5 SELECT
 6 outid,
 7 course_no
 8 FROM
 9 (
10 SELECT
11 a.outid,
12 a.course_no
13 FROM
14 edu_grade_hgm_1 a
15 INNER JOIN edu_grade b ON a.outid = b.outid
16 AND a.course_no = b.course_no
17 ) AS temp
18 )
19 AND exam_natures_new IS NULL;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM