今天使用同一张表先查询再修改,出现了一个错误You can’t specify target table ‘doc_param’ for update in FROM clause,意思就是你不能先查询一张表的同时又修改另一张表。
解决方案就是再查询之后定义一个临时表,下面是sql语句
错误sql
UPDATE doc_param set enum_id = 18 where id in (
SELECT id from doc_param p WHERE p.doc_id in (SELECT f.id from doc_info f where f.module_id = 5 and f.parent_id !=0
) and p.name like "%ContPrintFlag%"
)
正确的sql
UPDATE doc_param set enum_id = 18 where id in (
SELECT temp.id from ( //在外面新定义一个表
SELECT * from doc_param p WHERE p.doc_id in (SELECT f.id from doc_info f where f.module_id = 5 and f.parent_id !=0
) and p.name like "%ContPrintFlag%"
) temp
)