有表A 
ID a_name a_age 
1 张三 18 
2 李四 33 
…… 表B 
b_id ID station ……
1 1 广州 ……
2 1 上海 ……
3 1 北京 ……
4 2 南京 ……
5 2 天津 ……
我需要取得如下的数据 
a.id a_name station 
1 张三 北京 
就是取得A表中的人目前正在哪个城市,即表B中b_id最大的值 
(表B中的字段比较多,而且基本全部需要显示出来,因此用GROUP BY好像不行,用DISTINCT也不行)请大家帮帮忙

解决方案 »

  1.   


    --试一下:
     
    select a.id, a.a_name, b.station
      from tableA a,
           tableB b,
           (select id, rownum rn over(partition by id order by id desc)
              from tableB) c
     where a.id = b.id
       and a.id = c.id
       and c.rn = 1;
      

  2.   

    -- TRY IT ..
    SELECT A1.ID, A1.A_NAME, B1.STATION
      FROM A A1, B B1
     WHERE A1.ID = B1.ID
       AND NOT EXISTS (SELECT 1
              FROM B B2
             WHERE A1.ID = B2.ID
               AND B1.B_ID < B2.B_ID)
       AND A1.A_NAME = 'ZHANGSHA';
            ID A_NAME   STATION
    ---------- -------- --------
             1 ZHANGSHA BEIJING