假设A表是一个员工表,B表为履历表,其中有一个字段B_Order为履历信息的顺序。
请问能否用一条sql语句找出A表中所有员工信息及B表中对应的最新的一条履历信息。
既用关联语句select * from A a,B b where a.id=b.id and .....
B表出来的只是一个人的最新的那条,既B_Order为最大值的那条。

解决方案 »

  1.   

    这只能用在对单表查询里吧。。我现在是要两表关联查询,能用group吗?
      

  2.   

    SELECT A.*
    FROM A
    INNER JOIN (
                 SELECT FIRST_VALUE(B_Order) OVER (PARTITION BY ID ORDER BY B_Order DESC) AS MAX_B_Order,
                        ID
                 FROM   B
               ) ON A.ID = B.ID AND B.MAX_B_Order = B.ID;
      

  3.   

    select * 
    from A a,B b 
    where a.id=b.id 
    and b.B_Order||b.id =
    (select max(B_Order)||id from B group by id) ;
    或者
    select * 
    from A a,B b 
    where a.id=b.id 
    and (b.B_Order,b.id) in
    (select max(B_Order),id from B group by id) ;
      

  4.   

    不要轻易用GROUP,虽然用它比较方便
      

  5.   

    select a.* 
    from A a
    where b.B_Order =
    (select max(B_Order) from B b where a.id=b.id)这个可以吗?
      

  6.   

    倒序排列取第一个值就好了,如DragonBill的方法可以尝试下