问题:  

  今天在MySQL数据库删除重复数据的时候遇到了一个问题。如下脚本:

DELETE FROM tempA WHERE tid IN (
SELECT MAX(tid) AS tid FROM tempA GROUP BY name,age
)

  会出现报错信息:

  You can't specify target table 'tempA' for update in FROM clause

  大致意思是,在同一语句中,不能先select出同一表中的某些值,再update这个表。

 

解决方法:

  需要对上述脚本进行改造,如下:

DELETE FROM tempA WHERE tid NOT IN (
SELECT t.tid FROM (
SELECT MAX(tid) AS tid FROM tempA GROUP BY name,age
) t
)

  查询的时候增加一层中间表,就可以避免该错误。

 

相关文章:

  • 2021-10-24
  • 2021-05-20
  • 2022-01-12
  • 2021-09-12
  • 2021-06-28
  • 2021-12-12
  • 2021-06-07
猜你喜欢
  • 2022-12-23
  • 2021-11-07
  • 2021-12-30
  • 2022-12-23
  • 2022-01-21
相关资源
相似解决方案