当前位置: 代码迷 >> Oracle面试 >> 怎么实现以下查询
  详细解决方案

怎么实现以下查询

热度:500   发布时间:2016-04-24 03:30:33.0
如何实现以下查询
表 A
Aid       name        age

1         lily         8
2         lucy         9
3         lilei        9
表 B

Bid        Aid        waihao

1           2         meinv
2           2         luoli
3           1         yujie

查询出得结果
Aid       name        age          waihao
1         lily         8            yujie
2         lucy         9            meinv,louli
3         lilei        9
注意:外号有多的要用“,”分开
------解决方案--------------------

SELECT A.AID, A.NAME, A.AGE, WM_CONCAT(B.WAIHAO) WAIHAO
  FROM A, B
 WHERE A.AID = B.AID(+)
 GROUP BY A.AID, A.NAME, A.AGE;
--测试
[SYS@myoracle] SQL>WITH A AS(
  2  SELECT 1 aid,'lily' NAME ,8 age FROM dual UNION ALL
  3  SELECT 2 aid,'lucy' NAME ,9 age FROM dual UNION ALL
  4  SELECT 3 aid,'lilei' NAME ,9 age FROM dual
  5  ),B AS(
  6  SELECT 1 bid,2 aid,'meinv' waihao  FROM dual UNION ALL
  7  SELECT 2 bid,2 aid,'lucy' waihao  FROM dual UNION ALL
  8  SELECT 3 bid,1 aid,'lilei' waihao FROM dual
  9  )SELECT A.AID, A.NAME, A.AGE, WM_CONCAT(B.WAIHAO) WAIHAO
 10    FROM A, B
 11   WHERE A.AID = B.AID(+)
 12   GROUP BY A.AID, A.NAME, A.AGE
 13  ;

       AID NAME         AGE WAIHAO
---------- ----- ---------- ----------
         1 lily           8 lilei
         2 lucy           9 meinv,lucy
         3 lilei          9
  相关解决方案