我这个表1有个ID关联另一个表2的ID,但是表1的ID在表2可能有多条数据,我要查询表2中关联表1的最新的一条数据,求解决方案,想了很久想不出高效的,先在次谢过了
我假设你table2中表示“最新”字段为dt,这样的话可以用RANK来解决你的问题:
select * from (SELECT a.id,a.dt, RANK() OVER (PARTITION BY a.id order by a.dt desc) as RANK FROM #table2 a join #table1 b on a.id=b.id ) c where rank=1
结果是两个表join 起来的
@sixserve: 那就增加点table1的字段进去就行了啊。
select * from (SELECT b.*,a.dt, RANK() OVER (PARTITION BY a.id order by a.dt desc) as RANK FROM #table2 a join #table1 b on a.id=b.id ) c where rank=1
select distinct(*) from b where id in (select id from a)试试这个。
不行 distinct(*)就已经错了,而且这种查寻效率很低
select *,(select top 1 * from 表2 where 表1.Id=表2.ID order by 排序字段) from 表1
括号里面的select 不能用*的吧,这样只能查一个字段