两个表左连接
表1:id 状态
表2:状态 状态时间
一种状态会有多个状态时间
所以连接后会有多条数据
查询结果如下:
id   状态    状态时间
1    1       2010-12-14
1    1       2010-12-13
只需要时间最近的一条数据

解决方案 »

  1.   

    select m.id ,m.状态,max(n.状态时间) 状态时间 from tb1 m, tb2 n where m.状态 = n.状态 group by m.id ,m.状态
      

  2.   

    --1
    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.状态时间)
      

  3.   


    SELECT TA.*,TB.* FROM TA OUTER APPLY(SELECT TOP(1) * FROM TB WHERE TA.状态=TB.状态 ORDER BY 状态时间
     DESC)
      

  4.   

    SELECT TA.*,TB.* FROM TA OUTER APPLY(SELECT TOP(1) * FROM TB WHERE TA.状态=TB.状态 ORDER BY 状态时间
     DESC) TB
      

  5.   


    select m.* , n.*
    from tb1 m left join (select 状态 , max(状态时间) 状态时间 from tb2 group by 状态) n
    on m.状态 = n.状态