两个表左连接
表1:id 状态
表2:状态 状态时间
一种状态会有多个状态时间
所以连接后会有多条数据
查询结果如下:
id 状态 状态时间
1 1 2010-12-14
1 1 2010-12-13
只需要时间最近的一条数据
表1:id 状态
表2:状态 状态时间
一种状态会有多个状态时间
所以连接后会有多条数据
查询结果如下:
id 状态 状态时间
1 1 2010-12-14
1 1 2010-12-13
只需要时间最近的一条数据
调试欢乐多
select m.id ,m.状态,max(n.状态时间) 状态时间 from tb1 m, tb2 n where m.状态 = n.状态 group by m.id ,m.状态--2
select m.* , n.* from tb1 m, tb2 n where m.状态 = n.状态 and n.状态时间 = (select max(状态时间) from tb2 where 状态 = n.状态)--3
select m.* , n.* from tb1 m, tb2 n where m.状态 = n.状态 and not exists (select 1 from tb2 where 状态 = n.状态 and 状态时间 > n.状态时间)
SELECT TA.*,TB.* FROM TA OUTER APPLY(SELECT TOP(1) * FROM TB WHERE TA.状态=TB.状态 ORDER BY 状态时间
DESC)
DESC) TB
select m.* , n.*
from tb1 m left join (select 状态 , max(状态时间) 状态时间 from tb2 group by 状态) n
on m.状态 = n.状态