34,873
社区成员
发帖
与我相关
我的任务
分享这是我写完的按照两列去重其他列保留原始数据的语句,查出来是42条

但是单独运行where那一句,去重完应该是41行,有没有大佬帮忙看下我这语句那点有问题,三克油

你没有完整的表结构和测试数据,所以不想看了。
弄了一个和你需求差不多的,你自己来看看吧,看明白了再改写你那个很轻松的。
use tempdb
go
if object_id('t') is not null
drop table t
go
create table t(
c1 int,
c2 int,
c3 nvarchar(10),
c4 varchar(10)
)
go
insert into t values(1,2,'abc','def')
insert into t values(1,2,'abc','deg')
insert into t values(3,4,'abc','deg')
insert into t values(3,5,'abc','deg')
select * from (
select row_number() over(partition by c1,c2 order by c3,c4) as rid,t.*
from t
) as tt
where tt.rid=1
/*
rid c1 c2 c3 c4
1 1 2 abc def
1 3 4 abc deg
1 3 5 abc deg
*/

我现在表里一共就42条数据,BoardSN和CompName这两列重复的有一条数据,意思就是我这语句没生效..