使用first_value函数
select distinct col1,
first_value(col2) over (partition by col1 order by col2 asc)
from tmp
使用over开窗函数
select col1, col2 from (
select col1, col2,
row_number() over (partition by col1 order by col2 asc) as rownumber
from tmp
) foo
where rownumber = 1
如果有更多列,加个distinct即可
select col1,col2, col3 from tmp where col2 in
(
select distinct
first_value(col2) over (partition by col1 order by col2 DESC) as col2
from tmp
--WHERE you decide conditions
)
其他
group by的空值(null)问题
首先,可以确定的是group by是不会自动过滤掉null的,这可能导致java代码处理的时候报空指针。所以最好在sql就过滤掉它。
select * from product where type is not null;
如果字段值是数字的话,这种写法也可以,速度还快一些。
select * from product where type >0;