MYSQL删除某个字段多余重复记录

sells表信息

CREATE TABLE `sells` (
  `id` int(11) NOT NULL AUTO_INCREMENT,       #唯一ID
  `name` varchar(50) not null, #姓名
  `phone` varchar(10) not null,#电话
  `project` varchar(50) not null,#项目名
  `summay` text not null,#简介
  `email` varchar(50) not null,#邮箱
  `mobile` varchar(20) not null,#手机
  `bangdin` tinyint not null default '0',#是否绑定
  `bang_id` int not null ,#绑定人
  `level` tinyint not null ,#级别 a:1 b:2 c:3 d:4 d无效
  `notes` text null,#备注
  `notestime` datetime null,#备注时间
  `pingjiid` int not null,#评级人id
  `createtime` datetime not null ,#录入时间
  `edittime` datetime not null,#编辑时间
  PRIMARY KEY (`id`)
  )ENGINE=INNODB DEFAULT CHARSET=utf8;

 

delete `sells`
from `sells`,
(select * from sells a where  exists(select 1 from sells where a.project = project AND a.id<id AND `bangdin` =0) AND a.`bangdin` =0) as ss
where ss.project=sells.project and ss.id=sells.id

删除sells表中"未绑定记录信息" 中 "project值相同" 的 "多余重复的记录" 。

 

执行以下语句时:

delete sells from sells ,(select id from sells where `bangdin` =0 AND project in (select project from sells where `bangdin` =1)) AS tmp where sells.id=tmp.id

 

出现错误:You can't specify target table 'sells' for update in FROM clause

意思是:不能先select出同一表中的某些值,再update这个表(在同一语句中) 。mysql中不能这么用。

 

改为:delete sells from sells ,(select id from sells where `bangdin` =0 AND project in (select project from sells where `bangdin` =1)) AS tmp where sells.id=tmp.id

即可。功能:删除未绑定信息中project值与已绑定信息中project值相同的记录。

 

今记于此,以备后用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值