SQL选择具有相同列值的多个行

时间:2013-03-13 10:28:55

标签: sql sql-server

我有桌子:

column1   column2    column3        column4 
---------------------------------------------
1          53          6527          111
2          53          6527          111
3          53          6527          111
4          53          6527          111
5          53          6527          222
6          53          6527          222
7          53          6527          333
8          53          6527          333
9          53          6527          444
10         53          6527          444
11         53          6527          444
12         53          6527          444

我需要select如果存在三行,其中包含一些column4值,如果只存在两个或两个或一个。马克斯是三。在select之后我需要得到这样的结果:

column1   column2    column3        column4 
---------------------------------------------
1          53          6527          111
2          53          6527          111
3          53          6527          111
5          53          6527          222
6          53          6527          222
7          53          6527          333
8          53          6527          333
9          53          6527          444
10         53          6527          444
11         53          6527          444

1 个答案:

答案 0 :(得分:0)

由于您使用的是SQL Server,因此可以使用ranking function来获取结果:

select [column1], [column2], [column3], [column4]
from
(
  select [column1], [column2], [column3], [column4],
    row_number() over(partition by column2, column3, column4 order by column1) rn
  from yourtable
) src
where rn <= 3

请参阅SQL Fiddle with Demo