现在表A、B、C,表结构同,我想将三个表的记录联合在一起并按表中某一个时间字段time排序,原来的语句是 select * (select * from A union all selec * from B union all select * from c) order by time desc,但是查询出来的结果却这样的:结果记录的顺序是按A表降序+B表降序+C表降序出来的,并不是我想要的统一的降序,有什么办法可以实现?最好是一
条sql语句就能完成。

解决方案 »

  1.   

    select t.* from (select * from A union all selec * from B union all select * from c) t order by t.time desc看看
      

  2.   

    比如说,A表里有三条记录,time分别是2008-1-2、2008-3-3、2008-5-4,B表有两条记录,time分别是2008-2-1、2008-4-1,我想得到的记录应该是:
    2008-5-4
    2008-4-1
    2008-3-3
    2008-2-1
    2008-1-2
    这样排序显示的,然后用select t.* from (select * from A union all select * from B) t order by t.time desc的话,结果是这样的:
    2008-5-4
    2008-3-3
    2008-1-2
    2008-4-1
    2008-2-1我用的是oracle9.2,不知道是不是版本不同造成的?
      

  3.   

    不写*,你就把time取出来,看看排序
    还有,time什么类型
      

  4.   

    谢谢楼上的,我想问题找到了,原来time的类型居然是varchar