mysql 删除2个字段重复的记录
比如list表里面有title字段、xname字段这两个字段。我想查询并且删除这2个字段和表里面其他记录完全重复的(需满足title字段、xname字段都是重复的这个条件...
比如list表里面有title字段、xname字段 这两个字段。
我想查询并且删除这2个字段和表里面其他记录完全重复的(需满足title字段、xname字段都是重复的这个条件)应该怎么写?
下面是可以查询并删除title字段的参考语句(删除表里面重复的tite字段,并保留最小的id的一条记录):
create table tmp as select min(id) as col1 from 表名 group by title;
delete from 表名 where id not in (select col1 from tmp);
drop table tmp;
(我的要求就是能不能改成,删除表里面重复的title字段和xname字段2条字段都重复的记录) 展开
我想查询并且删除这2个字段和表里面其他记录完全重复的(需满足title字段、xname字段都是重复的这个条件)应该怎么写?
下面是可以查询并删除title字段的参考语句(删除表里面重复的tite字段,并保留最小的id的一条记录):
create table tmp as select min(id) as col1 from 表名 group by title;
delete from 表名 where id not in (select col1 from tmp);
drop table tmp;
(我的要求就是能不能改成,删除表里面重复的title字段和xname字段2条字段都重复的记录) 展开
3个回答
展开全部
那你要满足两个条件、两个字段同时重复、
那就按这两个字段分组啊
单一字段分组查出单一字段相同、双字段分组、双字段同时相同。
create table tmp as select min(id) as col1 from 表名 group by title;
这个是title相同的取最小ID、
create table tmp as select min(id) as col1 from 表名 group by title,xname;
这不就是title和xname同时相同的行中、取id最小的一行?
然后
delete from 表名 where id not in (select col1 from tmp);
不是这个id的就删除、
drop table tmp;
那就按这两个字段分组啊
单一字段分组查出单一字段相同、双字段分组、双字段同时相同。
create table tmp as select min(id) as col1 from 表名 group by title;
这个是title相同的取最小ID、
create table tmp as select min(id) as col1 from 表名 group by title,xname;
这不就是title和xname同时相同的行中、取id最小的一行?
然后
delete from 表名 where id not in (select col1 from tmp);
不是这个id的就删除、
drop table tmp;
展开全部
你要用一个php文件来做这个,就简单多了。要是用mysql做,可以试试存储过程。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
能不能描述清楚一点啊,看着都困了
追问
删除表里面重复的title和xname这2个字段,条件是这2个字段都重复了才删除。
追答
那我想问你,如果多条记录重复你选择哪一条?如果说随便选择任意一条,那你根据这两个字段分组就行了,否则你得需要条件的进行筛选
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询