table_a
----------------------
id orderNum value
1 a001 v001
2 a001 v002
table_b
----------------------
id orderNum status
1 a001 a
2 a001 b
3 a001 c
4 b001 d
5 b001 e这是我想到的办法,虽然可以运行,可是在table_b表的数据很多的时候,效率很慢,目前测试20多万的数据,感觉速度已经不可接受。请高手支招!!!谢谢了。select * from table_a a,
(select * from table_b b where b.id in(select max(id) from table_b c group by orderNum)) d where a.orderNum=d.orderNum
----------------------
id orderNum value
1 a001 v001
2 a001 v002
table_b
----------------------
id orderNum status
1 a001 a
2 a001 b
3 a001 c
4 b001 d
5 b001 e这是我想到的办法,虽然可以运行,可是在table_b表的数据很多的时候,效率很慢,目前测试20多万的数据,感觉速度已经不可接受。请高手支招!!!谢谢了。select * from table_a a,
(select * from table_b b where b.id in(select max(id) from table_b c group by orderNum)) d where a.orderNum=d.orderNum
----------------------
id orderNum value
1 a001 v001
2 b001 v002上面的table_a应该是这个数据。大概是这样,a,b,c,d等表以orderNum关联查询,其中可能有的表数据有重复,要求取id最大的记录
select * from table_a a,
table_b b ,
(select max(id) id from table_b c group by orderNum)) c where a.orderNum=d.orderNum
and b.id = c.id方法二正在想
from a,(
select ordernum ,status,row_number()over(partition by ordernum order by id desc)row_num
from c)b
where a.ordernum = b.ordernum and b.row_num=1;
不敢保证有你的sql效率高。你还是在执行的时候看看执行计划吧。