sql没有主键删除重复数据只保留一条,如图 ;
要删除id_depot字段对应的id_product重复的记录只保留一条,比如:00017只能保留一条对应的010101010021另外一条删除,这个表没有主建,感觉不适...
要删除id_depot字段对应的id_product重复的记录只保留一条,
比如:00017只能保留一条对应的010101010021另外一条删除,这个表没有主建,感觉不适合采用删除的方法,因为每一个id_depot度对应1W+条数据 展开
比如:00017只能保留一条对应的010101010021另外一条删除,这个表没有主建,感觉不适合采用删除的方法,因为每一个id_depot度对应1W+条数据 展开
4个回答
展开全部
应该把数据放到一个新表里面,别的我就不知道有什么方法了
代码如下:
select item, id..,distinct id_product .... into new_table
from...
在重复的字段前面加个关键字 distinct
new_table是新表的表名,你随便写
你试试
代码如下:
select item, id..,distinct id_product .... into new_table
from...
在重复的字段前面加个关键字 distinct
new_table是新表的表名,你随便写
你试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你说的这个情况,比较复杂。
没有主键,那么需要判断删除重复记录时,以什么为判断字段。
仅靠 select distinct * from table1 这样是不行的,因为id_depot字段和id_product字段虽然唯一,但是其他字段(比如price字段)可不唯一啊,id_product一样会有重复。
所以如果你要求严格的话,要把所有字段的重复可能性都考虑一下再处理。
如果仅对id_depot和id_product这两个字段有要求的话,可以通过临时表来处理。
假设表名为table1,则
1、添加唯一序列号
select identity(int,1,1) as tempkey, * into temp1 from table 1
2、取出id_depot、id_product唯一的最大序列号
select id_depot, id_product, max(tempkey) as maxkey into temp2 from temp1
3、删除临时表多余数据
delete a from temp1 a where not exists (select 1 from temp2 b where a.tempkey=b.maxkey)
4、删除临时表序列号
alter table temp1 drop column tempkey
5、删除原表数据
truncate table table 1
或者delete from table1
6、插回唯一数据
insert table1 select * from temp1
7、删除临时表
drop table temp1, temp2
没有主键,那么需要判断删除重复记录时,以什么为判断字段。
仅靠 select distinct * from table1 这样是不行的,因为id_depot字段和id_product字段虽然唯一,但是其他字段(比如price字段)可不唯一啊,id_product一样会有重复。
所以如果你要求严格的话,要把所有字段的重复可能性都考虑一下再处理。
如果仅对id_depot和id_product这两个字段有要求的话,可以通过临时表来处理。
假设表名为table1,则
1、添加唯一序列号
select identity(int,1,1) as tempkey, * into temp1 from table 1
2、取出id_depot、id_product唯一的最大序列号
select id_depot, id_product, max(tempkey) as maxkey into temp2 from temp1
3、删除临时表多余数据
delete a from temp1 a where not exists (select 1 from temp2 b where a.tempkey=b.maxkey)
4、删除临时表序列号
alter table temp1 drop column tempkey
5、删除原表数据
truncate table table 1
或者delete from table1
6、插回唯一数据
insert table1 select * from temp1
7、删除临时表
drop table temp1, temp2
追问
id_depot不是唯一的是一个分类
追答
对啊,就是取的 id_depot 加上 id_product 唯一的所有记录啊,这两个字段同时进行判断
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询