解决MySQL SQL语句出现#1093错误
今天遇到一个MySQL SQL语句问题 #1093,需要记录一下。 我使用了这样一个SQL: UPDATE `student_quiz_answer` SET `article_id`= (SELECT qa.article_id, sqa.answer_id FROM student_quiz_answer sqa LEFT JOIN `quiz_answer` qa ON sqa.answer_id = qa.ans
今天遇到一个MySQL SQL语句问题 #1093,需要记录一下。
我使用了这样一个SQL:
UPDATE `student_quiz_answer` SET `article_id`= (SELECT qa.article_id, sqa.answer_id FROM student_quiz_answer sqa LEFT JOIN `quiz_answer` qa ON sqa.answer_id = qa.answer_id where qa.article_id > 0)
问题来自MySQL更新Table某个字段时,如果 Update 值中存在自身Table 的 Select 就会遇到这个错误提示:
#1093 – You can’t specify target table ‘student_quiz_answer’ for update in FROM clause
但是SQL的 Update 值又必须根据当前Table的字段进行查询。
解决方法
把 Update 值作为一个新 Table,比如 t2,本身 table 别名为 t1。条件子句就是 t1 和 t2 的关联值相等。
于是修改为这样一个 SQL 语句:
UPDATE `student_quiz_answer` t1, (SELECT qa.article_id, sqa.answer_id FROM student_quiz_answer sqa LEFT JOIN `quiz_answer` qa ON sqa.answer_id = qa.answer_id where qa.article_id > 0) t2 SET t1.`article_id`= t2.article_id WHERE t1.answer_id = t2.answer_id
OK了,相当于弄个临时表,再弄个别名,再进行更新。
(...)
Read the rest of 解决MySQL SQL语句出现#1093错误 (1 words)
© lixiphp for LixiPHP, 2013. |
Permalink |
No comment |
Add to
del.icio.us
Post tags: #1093, SQL, Update
Feed enhanced by Better Feed from Ozh
推荐阅读
-
解决MySQL SQL语句出现#1093错误
-
Linux下C连接MySQL出现错误解决一例_MySQL
-
Linux系统下安装mysql时出现1045,1130错误的解决办法
-
关于连接mysql数据库时出现的时区错误timezone的解决办法
-
MySql出现#1036错误提示解决办法
-
Linux下MySql出现#1036 – Table ‘ ‘ is read only 错误解决方_MySQL
-
MySQL5.7+版本,提示mysql1055错误,sql_mode=only_full_group_by问题解决办法
-
MySQL同时执行多条SQL语句解决办法
-
SQL Server 2005 DTS导入平面数据出现错误解决方案
-
MySQL 数据库导出SQL出现乱码解决