如果我們有一個表Student,包含下面字段與數據:
?
?
首先,我們來看一下UNION的樣例:
?
假設換成Union All連接兩個結果集,則結果例如以下:
?
?
能夠看到, Union和Union All的差別之中的一個在于對反復結果的處理。
?
接下來,我們交換一個兩個SELECT語句的順序,看看結果是如何的。
?
?
能夠看到,對于UNION來說,交換兩個SELECT語句的順序后結果仍然是一樣的,這是由于 UNION會自己主動排序 。而UNION ALL在交換了SELECT語句的順序后結果則不同樣,由于UNION ALL不會對結果自己主動進行排序。
?
那么這個自己主動排序的規則是什么呢? 我們交換一下SELECT后面選擇字段的順序(前面使用SELECT *相當于SELECT ID,NAME,SCORE),看看結果怎樣:
?
?
但是看到,此時是依照字段SCORE來對結果進行排序的(前面SELECT *的時候是依照ID進行排序的)。
?
那么有人會問,假設我想自行控制排序, 能不能使用ORDER BY呢?當然能夠。 只是在寫法上有須要注意的地方:
?
?
order by子句必須寫在最后一個結果集里,而且其排序規則將改變操作后的排序結果。對于Union、Union All、Intersect、Minus都有效。
?
其它的集合操作符,如Intersect和Minus的操作和Union基本一致,這里一起總結一下:
?
Union,對兩個結果集進行并集操作,不包含反復行,同一時候進行默認規則的排序;
Union All,對兩個結果集進行并集操作,包含反復行,不進行排序;
Intersect,對兩個結果集進行交集操作,不包含反復行,同一時候進行默認規則的排序;
Minus,對兩個結果集進行差操作,不包含反復行,同一時候進行默認規則的排序。
?
能夠在最后一個結果集中指定Order by子句改變排序方式。
?
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
