2013-03-13 211 views
0

我有表:与同一列SQL选择多行值

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 
+0

请注明您通过添加适当的标签(Oracle,SQL Server,MySQL等)来定位的RDBMS。可能会有利用不被普遍支持的语言或产品功能的答案。此外,通过使用特定的RDBMS标记它,您的问题可能会得到更适合回答的人的关注。 – Taryn 2013-03-13 10:31:31

+0

噢..对不起,我修好了:) – Justinas 2013-03-13 10:34:31

回答

0

由于您使用的是SQL Server,您可以使用ranking function s到得到结果:

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