这个`` 开始的时候没有看到是sqlserver,所以写的sql是oracle的,oracle里面rowid是唯一的 而sqlserver至少到2000为止还没有类似oracle的rowid的伪标识,2005我不知道,也许有 所以是假定所有的列值都相同 执行上面的东西之前加个自增的列 alter table a add row_id int identity(1,1)大致是这么个意思吧 执行完了之后再drop该列 alter table a drop column row_id 比oracle要麻烦多了
我用distinct试了下貌似可以,不是删除而是生成了新表我做过示范了如下:create table r( id int identity primary key, name varchar(20) ) insert into r values('a') insert into r values('a2') insert into r values('a1') insert into r values('a1') insert into r values('a1') select * from r --查询数据 select name from r --根据name查询 select distinct name from r --查询不相同name的记录 select distinct name into a1 from r --生成不相同name的a1表 select * from a1 --查询a1表 drop table r --删除重复的r表 select * into r from a1 --生成不重复的r表 select * from r alter table r add id int identity primary key --给不重复的r表增加新的主键 select * from r --查看表
delete from A a where a.rowid!=(select max(rowid) from A b where a.bm=b.bm and a.mc=b.mc);
开始的时候没有看到是sqlserver,所以写的sql是oracle的,oracle里面rowid是唯一的
而sqlserver至少到2000为止还没有类似oracle的rowid的伪标识,2005我不知道,也许有
所以是假定所有的列值都相同
执行上面的东西之前加个自增的列
alter table a add row_id int identity(1,1)大致是这么个意思吧
执行完了之后再drop该列
alter table a drop column row_id
比oracle要麻烦多了
id int identity primary key,
name varchar(20)
)
insert into r values('a')
insert into r values('a2')
insert into r values('a1')
insert into r values('a1')
insert into r values('a1')
select * from r --查询数据
select name from r --根据name查询
select distinct name from r --查询不相同name的记录
select distinct name into a1 from r --生成不相同name的a1表
select * from a1 --查询a1表
drop table r --删除重复的r表
select * into r from a1 --生成不重复的r表
select * from r
alter table r add id int identity primary key --给不重复的r表增加新的主键
select * from r --查看表