楼主发表于:2009-05-18 12:16:50 Java codeSELECT 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个查询汇总排序,还是只对最后一个进行排序?望高手赐教,谢谢! * 对我有用[0]
/#4楼 得分:0回复于:2009-05-18 12:53:42 对整个排序:
SQL codeselect / 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排序 对我有用[0]
/#5楼 得分:0回复于:2009-05-18 13:20:17 引用 4 楼 kokobox 的回复:
对整个排序:
SQL code
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
是对…
可不是这样的哦。你可以在oracle里面试验一下 对我有用[0]
/#8楼 得分:0回复于:2009-05-18 14:04:03 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...
检索之后形成数据区 例如地址是Ox0000002
sql的执行顺序决定 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)
这样的话,括号中的形成一个独立的运行区,具有自己的优先权。
就跟编译原理中用括号提高运算优先权一样。 * 对我有用[0]