leisure

JAVA - exceed,helloworld
随笔 - 50, 文章 - 0, 评论 - 11, 引用 - 0
数据加载中……

MYSQL Error Code: 1093 You can't specify target table 'x' for update in FROM clause

当子查询作为条件,执行delete跟update操作时,会出现:
Error Code: 1093 You can't specify target table 'x' for update in FROM clause

作一个简单的示例:
CREATE TABLE tbl_a(
id 
INT,
NAME 
VARCHAR(50)
);

INSERT INTO tbl_a VALUES(1'leisure');
INSERT INTO tbl_a VALUES(2'leisure2');

SELECT * FROM tbl_a;

执行更新操作
UPDATE tbl_a 
    
SET id = (
        
SELECT id FROM tbl_a 
        
WHERE NAME = 'leisure2'
    ) 
WHERE NAME = 'leisure';

这时,如愿见到我们标题上的错误,解决方法如下(橙色字体系关键):
UPDATE tbl_a 
    
SET id = (
        
SELECT id FROM (
            
SELECT * FROM tbl_a WHERE NAME = 'leisure2'
        ) xx
    )
WHERE NAME = 'leisure';

posted on 2011-11-22 09:58 leisure 阅读(3542) 评论(1)  编辑  收藏 所属分类: database

评论

# re: MYSQL Erro讨厌呀呀呀呀呀呀呀呀呀与r Code: 1093 You can't specify target table 'x' for update in FROM clause  回复  更多评论   

突然弱弱弱弱弱弱弱弱弱弱弱弱弱弱弱弱弱弱弱弱弱弱与
2014-01-26 10:41 | 讨厌呀呀呀呀呀呀英语

只有注册用户登录后才能发表评论。


网站导航: