报错的代码:
UPDATE a SET model_no = 0 WHERE id IN ( SELECT id FROM a WHERE gender = '1' AND type = '4' AND model_no > '1' AND model_no <= '3' ) b
先查出符合条件的数据的ID,然后再对这个id的数据进行操作,此时就会报【You can't specify target table for update in FROM clause】
原因是:不能先select出同一表中的某些值,再update这个表(在同一语句中);
解决办法:将查处的数据放到一个中间表中再从中间表中获取ID进行数据操作,示例代码:
UPDATE a SET model_no = 0 WHERE id IN ( select b.id from( SELECT id FROM a WHERE gender = '1' AND type = '4' AND model_no > '1' AND model_no <= '3' ) b)