最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

union組合結果集時的order問題

 更新時間:2009年09月17日 21:56:40   作者:  
如果能確定各查詢結果不會有重復的項,最好就帶上all,因為這樣還是可以提高一些效率的。
近日,在一個項目中用到union組合兩個select結果,調試sql時總是報錯,所報錯誤也只是說在union附近有問題,因為sql中用到了group,我想也許是union不支持吧,由于時間緊,就先在程序中做了合并處理。但程序員對于代碼的完美性要求總是不能放棄的,所以,常常會有如鯁在喉的感覺,不搞明白心里會不舒服。

仔細查看了MS的在線幫助,在有關UNION的描述中找到這樣一段說明:

如果使用 UNION 運算符,那么各個 SELECT 語句不能包含它們自己的 ORDER BY 或 COMPUTE 子句。而只能在最后一個 SELECT 語句的后面使用一個 ORDER BY 或 COMPUTE 子句;該子句適用于最終的組合結果集。只能在各個 SELECT 語句中指定 GROUP BY 和 HAVING 子句。

在這段說明中并沒有說union不能用于group,而是說在各個Select中不能包含order by,而在我的語句中恰恰就有這個,看來是我猜錯了。試了一下把order去掉,果然不會報錯了。也就是說,使用union的時候,各查詢group是可以的,但不能order或compute。那如果說非要group,有沒有辦法呢?正常情況下只能在最后使用,而且是針對組合后的結果集進行排序的,而我剛才所說的group,就不能用于最終結果集,而只能用于每個查詢。

這是正常的用法,有些人想在每個查詢中先排序,然后再union,也有非正常的用法,類似:

select * from (select a from [table] order by a) union ...

另外,union后面還可以加上all,在默認情況下,union時會刪除重復的項,如果加上all則不進行篩選,組合所有的結果。如果能確定各查詢結果不會有重復的項,最好就帶上all,因為這樣還是可以提高一些效率的。

相關文章

最新評論

资溪县| 拉孜县| 开原市| 德昌县| 原阳县| 菏泽市| 营口市| 德庆县| 锡林郭勒盟| 鹤壁市| 旬阳县| 仙游县| 东宁县| 多伦县| 辉县市| 博白县| 东台市| 军事| 闻喜县| 锡林浩特市| 南郑县| 金秀| 镇远县| 溧阳市| 安平县| 自贡市| 庆云县| 洱源县| 旬阳县| 东辽县| 锡林郭勒盟| 阿巴嘎旗| 龙游县| 夹江县| 泰安市| 息烽县| 高尔夫| 北京市| 富蕴县| 墨竹工卡县| 苏尼特右旗|