mysql SQL语句You can't specify target table ' for update in FROM clause解决



  1. DELETE
  2. FROM
  3. bd_country
  4. WHERE
  5. id IN (
  6. SELECT
  7. id
  8. FROM
  9. bd_country
  10. WHERE
  11. statecode IS NULL
  12. AND citycode IS NULL
  13. AND nameCN IS NULL
  14. )
然后出现了  [Err] 1093 - You can't specify target table 'bd_country' for update in FROM clause的错误,当时很纳闷 一直这样写的怎么会出现问题呢,它的意思是(你不能在FROM子句指定目标表更新),我想了想是不是以前我一直用的Oracle,Oracle可以但是Mysql不可以。

解决思路:既然Mysql不让对查询到的目标语句进行更新,那么我在它的上面在套一个子查询就可以。

  1. DELETE
  2. FROM
  3. bd_country
  4. WHERE
  5. id IN (
  6. SELECT
  7. tmp.id
  8. FROM
  9. (
  10. SELECT
  11. id
  12. FROM
  13. bd_country
  14. WHERE
  15. statecode IS NULL
  16. AND citycode IS NULL
  17. AND nameCN IS NULL
  18. ) tmp
  19. )
  1. DELETE
  2. FROM
  3. bd_country
  4. WHERE
  5. id IN (
  6. SELECT
  7. id
  8. FROM
  9. bd_country
  10. WHERE
  11. statecode IS NULL
  12. AND citycode IS NULL
  13. AND nameCN IS NULL
  14. )
然后出现了  [Err] 1093 - You can't specify target table 'bd_country' for update in FROM clause的错误,当时很纳闷 一直这样写的怎么会出现问题呢,它的意思是(你不能在FROM子句指定目标表更新),我想了想是不是以前我一直用的Oracle,Oracle可以但是Mysql不可以。

解决思路:既然Mysql不让对查询到的目标语句进行更新,那么我在它的上面在套一个子查询就可以。

  1. DELETE
  2. FROM
  3. bd_country
  4. WHERE
  5. id IN (
  6. SELECT
  7. tmp.id
  8. FROM
  9. (
  10. SELECT
  11. id
  12. FROM
  13. bd_country
  14. WHERE
  15. statecode IS NULL
  16. AND citycode IS NULL
  17. AND nameCN IS NULL
  18. ) tmp
  19. )

猜你喜欢

转载自blog.csdn.net/hanjungua8144/article/details/80917361