您是否尝试过像下面这样简单地更新一些东西?
update category_tmp set last_update=NOW()
where category_id in (
select category_id from category_tmp where name like 'A%'
);
在 MySQL 中你会得到这样的错误:
update category_tmp set last_update=NOW()
where category_id in (
select category_id from category_tmp where name like 'A%'
);
所以它说你不能在
where
条件的子查询中使用相同的更新
table
名。解决这个问题的技巧是在 where 子句中使用另一个子查询,这样它就不会看到正在使用的
table
名!这是一个解决方法:
update category_tmp set last_update=NOW()
where category_id in (
select category_id from category_tmp where name like 'A%'
);
请注意,在 MySQL 中,您必须将子查询结果命名为
ID_LIST
,以便它在外部查询中再次重新选择它!否则会抛出这个错误:
update category_tmp set last_update=NOW()
where category_id in (
select category_id from category_tmp where name like 'A%'
);