union組合結(jié)果集時的order問題
發(fā)布日期:2022-01-31 13:30 | 文章來源:站長之家
仔細(xì)查看了MS的在線幫助,在有關(guān)UNION的描述中找到這樣一段說明:
如果使用 UNION 運(yùn)算符,那么各個 SELECT 語句不能包含它們自己的 ORDER BY 或 COMPUTE 子句。而只能在最后一個 SELECT 語句的后面使用一個 ORDER BY 或 COMPUTE 子句;該子句適用于最終的組合結(jié)果集。只能在各個 SELECT 語句中指定 GROUP BY 和 HAVING 子句。
在這段說明中并沒有說union不能用于group,而是說在各個Select中不能包含order by,而在我的語句中恰恰就有這個,看來是我猜錯了。試了一下把order去掉,果然不會報錯了。也就是說,使用union的時候,各查詢group是可以的,但不能order或compute。那如果說非要group,有沒有辦法呢?正常情況下只能在最后使用,而且是針對組合后的結(jié)果集進(jìn)行排序的,而我剛才所說的group,就不能用于最終結(jié)果集,而只能用于每個查詢。
這是正常的用法,有些人想在每個查詢中先排序,然后再union,也有非正常的用法,類似:
select * from (select a from [table] order by a) union ...
另外,union后面還可以加上all,在默認(rèn)情況下,union時會刪除重復(fù)的項,如果加上all則不進(jìn)行篩選,組合所有的結(jié)果。如果能確定各查詢結(jié)果不會有重復(fù)的項,最好就帶上all,因為這樣還是可以提高一些效率的。
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。
相關(guān)文章