我想更新一张表,先查出满足条件的数据的id,然后再用 id in回表查询,如下(只是一个例子):
UPDATE table_name
SET status = 0
WHERE
id IN ( SELECT id FROM table_name WHERE name = 'aaaa' OR name = 'bbbbb' )
这样子报了一个错误
刚开始我还以为是sql有语法问题,捣鼓了很久,后面才发现 mysql 不允许更新表的同时,又查询这张表,搞到最后还是得嵌套一张临时表,先把数据查询出来作为一张临时表,再条件更新。
UPDATE table_name
SET status = 1
WHERE
id IN (
SELECT
id
FROM
(
( SELECT id FROM table_name WHERE name = 'aaaa' OR name = 'bbbb' )) AS table_name_temp)
但我印象中以前是没出现过这个问题的,真搞不懂 mysql 要这么麻烦