id name insertdate
1 a 2009-07-30
1 a 2009-07-31
1 b 2009-07-31
1 b 2009-08-01
如何得到下面结果:
id name insertdate
1 a 2009-07-31
1 b 2009-08-01
其中id,name,insertdate均为主键,
...全文
13716打赏收藏
求教SQL语句
id name insertdate 1 a 2009-07-30 1 a 2009-07-31 1 b 2009-07-31 1 b 2009-08-01 如何得到下面结果: id name insertdate 1 a 2009-07-31 1 b 2009-08-01 其中id,name,insertdate均为主键,
[Quote=引用 6 楼 adebayor 的回复:]
引用 4 楼 fadingagile 的回复:
select *
from a
where (id,name,insertdate) in (
select id,name,max(insertdate) insertdate
from a
group by id,name )
[Quote=引用 11 楼 adebayor 的回复:]
引用 10 楼 inthirties 的回复:
引用 9 楼 inthirties 的回复:
引用 8 楼 adebayor 的回复:
引用 7 楼 tiantom 的回复:
引用 3 楼 inthirties 的回复:
select * from (select a.*, row_number() over(partition by id, name order by insertdate desc) row_no
from a) where row_no = 1;
使用分析函数比较容易实现
不用分析函数该怎么搞?
如果不用只好自己group by了
select *
from a
where exist (select 1 from
(select id,name,max(insertdate) insertdate
from a
group by id,name) b where a.id=b.id and a.name=b.name and a.insertdate=b.insertdate)
[Quote=引用 10 楼 inthirties 的回复:]
引用 9 楼 inthirties 的回复:
引用 8 楼 adebayor 的回复:
引用 7 楼 tiantom 的回复:
引用 3 楼 inthirties 的回复:
select * from (select a.*, row_number() over(partition by id, name order by insertdate desc) row_no
from a) where row_no = 1;
使用分析函数比较容易实现
不用分析函数该怎么搞?
如果不用只好自己group by了
select *
from a
where exist (select 1 from
(select id,name,max(insertdate) insertdate
from a
group by id,name) b where a.id=b.id and a.name=b.name and a.insertdate=b.insertdate)
[Quote=引用 9 楼 inthirties 的回复:]
引用 8 楼 adebayor 的回复:
引用 7 楼 tiantom 的回复:
引用 3 楼 inthirties 的回复:
select * from (select a.*, row_number() over(partition by id, name order by insertdate desc) row_no
from a) where row_no = 1;
使用分析函数比较容易实现
不用分析函数该怎么搞?
如果不用只好自己group by了
select *
from a
where exist (select 1 from
(select id,name,max(insertdate) insertdate
from a
group by id,name) b where a.id=b.id and a.name=b.name and a.insertdate=b.insertdate)
[Quote=引用 8 楼 adebayor 的回复:]
引用 7 楼 tiantom 的回复:
引用 3 楼 inthirties 的回复:
select * from (select a.*, row_number() over(partition by id, name order by insertdate desc) row_no
from a) where row_no = 1;
使用分析函数比较容易实现
不用分析函数该怎么搞?
[/Quote]
如果不用只好自己group by了
select *
from a
where exist (select 1 from
(select id,name,max(insertdate) insertdate
from a
group by id,name) b where a.id=b.id and a.name=b.name and a.insertdate=b.insertdate)
[Quote=引用 7 楼 tiantom 的回复:]
引用 3 楼 inthirties 的回复:
select * from (select a.*, row_number() over(partition by id, name order by insertdate desc) row_no
from a) where row_no = 1;
[Quote=引用 3 楼 inthirties 的回复:]
select * from (select a.*, row_number() over(partition by id, name order by insertdate desc) row_no
from a) where row_no = 1;
[/Quote]
使用分析函数比较容易实现
[Quote=引用 3 楼 inthirties 的回复:]
select * from (select a.*, row_number() over(partition by id, name order by insertdate desc) row_no
from a) where row_no = 1;
[/Quote]
[Quote=引用 1 楼 hebo2005 的回复:]
好几种方法,说种最简单的
select id,name,max(insertdate) insertdate
from a
group by id,name
[/Quote]
忘了说了 里面还有好多字段 我是想先按id,name分组后 取出insertdate最大的那条数据