我目前有个多表查询的SQL,列较多,有些复杂,现在要筛选查询例:一张表中有如下数据,ID不是唯一的,部分列值相同,每次更新都向表中插入一个新版本,但ID不变,如下表:ID | Name | version001 aaaa 0
001 aaaa 1
001 aaaa 1.1
002 bbbb 0
002 bbbb 1
002 bbbb 2
需要输出结果:
ID | Name | version001 aaaa 1.1
002 bbbb 2
001 aaaa 1
001 aaaa 1.1
002 bbbb 0
002 bbbb 1
002 bbbb 2
需要输出结果:
ID | Name | version001 aaaa 1.1
002 bbbb 2
from t
group by ID ,Name
比如:
select id,name,max(version),min(其他列),max(其他列) from t group by id,name
from
(
select x.*, row_number() over(partition by id, name order by version desc) rn
from x
) x1
where rn = 1;
http://topic.csdn.net/u/20080626/00/43d0d10c-28f1-418d-a05b-663880da278a.html
1楼和2楼的不可用,如果这么简单,我就不会上来提问了,输出结果仍然是原结果,如果
select id,max(version) from t group by id
的话倒是可以拿到最大值,但却不能拿到其他列的值,如果group多列的值,结果又得不到我要的效果,你们可以试下的,呵呵,谢谢各位!
select id,name,version from user a
where version=(select max(version ) from user where id=a.id)谢谢5楼提供的参考,也谢谢各位的帮忙,呵呵,结贴喽、、、