使用mysql一条sql语句先查询后修改

今天使用同一张表先查询再修改,出现了一个错误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

)

你可能感兴趣的:(Java基础,java,mysql)