您的位置:首页 > 其它

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

2016-11-30 10:51 344 查看
今天写mysql删除重复语句的时候,报了这个错误You can't specify target table 't' for update in FROM clause。

1、我的表结构是这样的,

CREATE TABLE `tdb_goods` (

`id` int(11) NOT NULL,

`name` varchar(255) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2、插入表数据

INSERT INTO `test`.`tdb_goods` (`id`, `name`) VALUES ('1', 'A');

INSERT INTO `test`.`tdb_goods` (`id`, `name`) VALUES ('2', 'A');

INSERT INTO `test`.`tdb_goods` (`id`, `name`) VALUES ('3', 'B');

INSERT INTO `test`.`tdb_goods` (`id`, `name`) VALUES ('4', 'B');

3、查询语句:

DELETE t

FROM

`tdb_goods` t

WHERE

t.id IN (

SELECT

a.id

FROM

tdb_goods a,

tdb_goods b

WHERE

a. NAME = b. NAME

AND a.id > b.id

)

4、报错

5、解决方法

在in 语句里面再套一层查询

DELETE t

FROM

`tdb_goods` t

WHERE

t.id IN (

SELECT

t.id

FROM

(

SELECT

a.id

FROM

tdb_goods a,

tdb_goods b

WHERE

a. NAME = b. NAME

AND a.id > b.id

) t

)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐