SELECT A1,A2... FROM TABLE_1 WHERE...
UNION ALL
SELECT A1,A2... FROM TABLE_2 WHERE...
UNION ALL
SELECT A1,A2... FROM TABLE_3 WHERE...
ORDER BY A1 DESC不考虑其它因素,我就想知道最后的那个排序是对3个查询汇总排序,还是只对最后一个进行排序?望高手赐教,谢谢! 

解决方案 »

  1.   

    这个sql语句对吗?
    不会报A1是属于哪个表中列的异常吗?
      

  2.   

    对整个排序:select * from (
    SELECT A1,A2... FROM TABLE_1 WHERE... 
    UNION ALL 
    SELECT A1,A2... FROM TABLE_2 WHERE... 
    UNION ALL SELECT A1,A2... FROM TABLE_3 
    WHERE... 
    )   ORDER BY A1 DESC
    这个:SELECT A1,A2... FROM TABLE_1 WHERE...
    UNION ALL
    SELECT A1,A2... FROM TABLE_2 WHERE...
    UNION ALL
    SELECT A1,A2... FROM TABLE_3 WHERE...
    ORDER BY A1 DESC是对最后一个select排序
      

  3.   


    可不是这样的哦。你可以在oracle里面试验一下
      

  4.   


    SELECT A1,A2... FROM TABLE_1 WHERE... 
    UNION ALL 
    SELECT A1,A2... FROM TABLE_2 WHERE... 
    UNION ALL 
    SELECT A1,A2... FROM TABLE_3 WHERE... 
    检索之后形成数据区  例如地址是Ox0000002sql的执行顺序决定 select 优先权高,之后对数据区的数据(地址Ox0000002)进行排序。SELECT A1,A2... FROM TABLE_1 WHERE...
    UNION ALL
    SELECT A1,A2... FROM TABLE_2 WHERE...
    UNION ALL
    (SELECT A1,A2... FROM TABLE_3 WHERE...
    ORDER BY A1 DESC)
    这样的话,括号中的形成一个独立的运行区,具有自己的优先权。就跟编译原理中用括号提高运算优先权一样。