mysql中
是没有问题的
也是麽有问题的
但是
就TMD有问题了
解决棒法是创建临时表
- delete from sns_hits where id not in (1,2,3)
- delete from sns_hits where id not in (select id from another_table)
但是
- delete from sns_hits where id not in (select id from sns_hits)
解决棒法是创建临时表
- CREATE TEMPORARY TABLE tmp_sns_hits (
- `id` BIGINT(20)
- )
亲自实验的demo:
DELETE from user WHERE id not in (SELECT id from user WHERE id >4)
----此语句执行报错[Err] 1093 - You can't specify target table 'user' for update in FROM clause
DELETE from user WHERE id not in (SELECT * from (SELECT id from user u WHERE u.id>4)u)
DELETE from user WHERE id not in (SELECT * from (SELECT id from user u WHERE u.id>4)u)
-----执行成功
总结:此种删除时建立临时表是关键。。。。。