Sql 在一列中选择具有重复值的行
在SQL Server 2008 R2中,使用此表:Sql 在一列中选择具有重复值的行,sql,sql-server,Sql,Sql Server,在SQL Server 2008 R2中,使用此表: CREATE TABLE mytest( id [bigint] IDENTITY(1,1) NOT NULL, code [bigint] NULL, sequence_number [int] NULL ); 此查询: SELECT id, code, sequence_number FROM mytable 返回以下数据: id code sequence_number 1
CREATE TABLE mytest(
id [bigint] IDENTITY(1,1) NOT NULL,
code [bigint] NULL,
sequence_number [int] NULL
);
此查询:
SELECT id, code, sequence_number
FROM mytable
返回以下数据:
id code sequence_number
1 381 0
2 381 1
3 382 0
4 382 1
5 383 0
6 383 1
7 383 1
8 384 0
9 384 1
10 385 0
11 385 1
12 385 2
13 386 0
14 386 1
15 386 1
16 386 2
17 387 0
18 387 1
19 387 1
20 387 2
21 387 3
22 387 3
23 388 0
24 388 1
25 388 1
26 388 2
27 388 2
28 389 0
29 389 1
如何仅选择这些行:
7 383 1
15 386 1
19 387 1
22 387 3
25 388 1
27 388 2
这些是MAXid行,其中有多条具有相同序列号的记录。我想要每个代码和序列号的唯一组合的所有最高ID
因此,实际上我只想选择重复的序列号记录
如何执行此操作?从mytest中选择代码、MAXsequence\u编号
按代码分组从mytest中选择代码、MAXsequence\u编号
按代码分组尝试以下操作:-
Select ID,code,sequence_number from
(
Select ID,
code,
[rn] = row_number() over (partition by code,sequence_number order by id),
sequence_number
from yourTable
)s
where rn > 1
在中试一试:-
Select ID,code,sequence_number from
(
Select ID,
code,
[rn] = row_number() over (partition by code,sequence_number order by id),
sequence_number
from yourTable
)s
where rn > 1
演示在中使用此
SELECT
MAX(t1.Id) as ID,
t1.code,
t1.sequence_number
FROM mytest t1
INNER JOIN mytest t2
ON t1.id <> t2.id
AND t1.code = t2.code
AND t1.sequence_number = t2.sequence_number
GROUP BY t1.code,
t1.sequence_number
ORDER BY ID
用这个
SELECT
MAX(t1.Id) as ID,
t1.code,
t1.sequence_number
FROM mytest t1
INNER JOIN mytest t2
ON t1.id <> t2.id
AND t1.code = t2.code
AND t1.sequence_number = t2.sequence_number
GROUP BY t1.code,
t1.sequence_number
ORDER BY ID
你试过我的ans吗?你试过我的ans吗?