表A
字段: a   b   id
      1   2   4
      2   2   5
      3   2   6表B:
字段 a  c  d
    4   2  1
    2   2  1
根据表b对表A进行排序条件:如果表B的a字段的值出现在a表的a字段中的时候,在a表中的该记录排序靠前
如上面的排序结果为:
       a   b   id
      2   2   5
      1   2   4
      3   2   6

解决方案 »

  1.   


    select a, b, id from (
      select nvl(B.a, -9999) as pn, a.a, a.b, a.id
      from A left outer join B on A.a = B.a) x
    order by pn, a
      

  2.   

    --思路:先A表左连接B表,再对B.a值为空或非空转换为1,0 根据转换后的值进行排序即可.
      select A.*
        from A left join B on A.a = B.a
    order by decode(B.a,null,1,0)