MYSQL执行如下语句报错:
UPDATE
t_jygz_teachtask
SET
completed_hours = completed_hours + 1
WHERE id =
(SELECT
id
FROM
t_jygz_teachtask
WHERE class_bh = '4')
报错信息如下:
错误代码: 1093
You can't specify target table 't_jygz_teachtask' for update in FROM clause
意思是不能在同一语句中更新select出的同一张表元组的属性值
解决方法:将select出的结果通过中间表再select一遍即可。
UPDATE
t_jygz_teachtask
SET
completed_hours = completed_hours + 1
WHERE id =
(SELECT
id
FROM
(SELECT
id
FROM
t_jygz_teachtask
WHERE class_bh = '4') temp)