一个表中有三列,数据如下:
1 | 2 | a |
1 | 2 | b |
3 | 4 | c |
3 | 4 | d |
7 | 8 | e |
求SQL语句实现如下功能: 以第一列和第二列为分组查询出不重复的行,第三列也要显示但不重要,只需显示每组的第一个条即可。我所求的结果如下:
1 | 2 | a |
3 | 4 | c |
7 | 8 | e |
就直接分组就可以了
select 列1, 列2,max(列3) from table group by 列1, 列2
select 列1,max(列2),max(列3) from table group by 列1
如果你用的是sql2005的话:
WITH s as(
select 列1, 列2,列3, ROW_NUMBER() OVER (PARTITION BY 列1, 列2 ORDER BY 列1)AS rn from test a )
select * from s where rn<2
2005+按ls的就可以了,2000的话可以这样:
select * from tb a where not exists(select 1 from tb where col1=a.col1 and col2=a.col2 and col3<a.col3)