mysql中You can't specify target table <tbl> for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表(在同一语句中)。
例如下面这个sql: 报错
DELETE from monthxl where dateTime in
(
SELECT a.dateTime from monthxl a where a.dateTime !=(
select max(b.dateTime) from monthxl b where a.month=b.month
)
)
修改如下:
DELETE FROM monthxl where dateTime in
(
select b.dateTime from ( -- 用临时表 包装一层 再删除
SELECT a.month,a.dateTime from monthxl a where a.dateTime !=(
select max(b.dateTime) from monthxl b where a.month=b.month
)
) b
)