ITPub博客

首页 > 数据库 > MySQL > 【MySQL】ERROR 1093 You can

【MySQL】ERROR 1093 You can

原创 MySQL 作者:神谕丶 时间:2015-12-17 13:52:25 0 删除 编辑

【问题描述】:

Error: 
1093 SQLSTATE: HY000 ()

Message: You can't specify target table '%s' for update in FROM clause


  1. mysql> SHOW ERRORS;
  2. +-------+------+----------------------------------------------------------------------------------------+
  3. | Level | Code | Message                                                                                |
  4. +-------+------+----------------------------------------------------------------------------------------+
  5. | Error | 1093 | You can't specify target table 'table_name' for update in FROM clause                  |       
  6. +-------+------+----------------------------------------------------------------------------------------+
  7. 1 row in set (0.02 sec)


常见的一个ERROR,在UPDATE时会出现,故DELETE时也有可能出现该问题。

大致意思是,不能根据某张表里SELECT出来的条件去UPDATE(DELETE)。

比如如下语句:
  1. DELETE FROM table_name
  2. WHERE id IN 
  3. (SELECT id
  4. FROM table_name 
  5. GROUP BY company_id
  6. HAVING COUNT(1)>1);

【解决方案】:

先将SELECT出来的结果集放入临时表,再从临时表取出条件
比如:

  1. DELETE FROM table_name
  2. WHERE id IN
  3. (SELECT a.id from
  4.     (SELECT id
  5.     FROM table_name
  6.     GROUP BY company_id
  7.     HAVING COUNT(1)>1) a
  8.     );


作者公众号(持续更新)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29773961/viewspace-1873900/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
微信公众号:神谕的暗影长廊

注册时间:2014-07-28

  • 博文量
    161
  • 访问量
    1078364