一、遇到的问题
MySQL报错You can't specify target table 'test' for update in FROM clause
二、解决
1、报错sql
报错的意思是在同一sql语句中,通过子查询在同一个表中查询的数据,不能作为更新这个表的where条件。
UPDATE
`test`
SET
test_status = 0
WHERE test_user_id IN
(SELECT
test_user_id
FROM
test
WHERE test_user_ctime = '') ;
2、使用如下sql,即可解决
UPDATE
`test`
SET
test_status = 0
WHERE test_user_id IN
(SELECT
test_user_id
FROM
(SELECT
test_user_id
FROM
test
WHERE test_user_ctime = '') AS temp) ;
将查询的表select as指定表别名,从别名表中查询数据作为更新这个表的where条件,即可解决同一个表操作报错的问题。
同理,删除操作,也会报同样的错误哦