执行这条 SQL 语句时报错
DELETE FROM tableName WHERE id NOT IN ( SELECT id FROM tableName GROUP BY date );
在 MySQL 中, 写 SQL 语句的时候 , 可能会遇到 You can't specify target table'表名' for update in FROM clause 这样的错误, 它的意思是说, 不能先 select 出同一表中的某些值, 再 update 这个表 (在同一语句中), 即不能依据某字段值做判断再来更新某字段的值.
解决方法:
将 SELECT 出的结果再通过中间表 SELECT 一遍, 这样就规避了错误
- DELETE
- FROM
- tableName
- WHERE
- id NOT IN ( SELECT a.id FROM ( SELECT id FROM tableName GROUP BY date ) AS a );
来源: http://www.bubuko.com/infodetail-3141802.html