程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql---union的用法

mysql---union的用法

編輯:MySQL綜合教程

union的作用很簡單用來合並兩條sql的結果集

語法: SQL1 UNION SQL2

現有一張價格表

\

要求:<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPsfzs/a82yYjMjY2ODQ7tc3T2jIwMDC6zbzbJiMyNjY4NDu439PaMzAwMLXEyczGt6OssrvE3NPDb3K6zW5vdCBiZXR3ZWVuoa2hrWFuZDwvcD4KPHA+PHN0cm9uZz7LvMK3o7o8L3N0cm9uZz7O0sPHv8nS1M/Ix/Oz9rXN09oyMDAwtcTJzMa3tcO1vb3hufu8rzE8L3A+CjxwPtTZx/Oz9rjf09ozMDAwtcTJzMa3tcO1vb3hufu8rzI8L3A+CjxwPtTZwPvTw3VuaW9uus+yor3hufu8rzG6zb3hufu8rzI8L3A+CjxwPjxpbWcgc3JjPQ=="http://www.2cto.com/uploadfile/Collfiles/20140618/2014061808570348.jpg" alt="\">

什麼時候才允許使用union?

答:只要兩個結果集的列數相同就可以使用,即使字段類型不相同,也可以使用。

\

第一個結果集有2列,第二個結果集有1列,運行後提示列數不一樣的提示。

\

列數相同,但字段類型不同。如goods_name是字符類型而goods_id是整形,但同樣可以union。值得注意的是union後字段的名稱以第一條SQL為准


關於union的排序

\

可見內層排序沒有發生作用,那現在試試在外層排序

\

可見外層排序發生了作用

那是不是內層排序就沒有用了呢,其實換個角度想想內層先排序,外層又排序,明顯內層排序顯得多余,所以MYSQL優化了SQL語句,不讓內層排序起作用。要想內層排序起作用,必須要使內層排序的結果能影響最終的結果。如:加上limit

\

這樣內層排序就起作用了


若兩次有重復的行出現會怎樣?

再創建2個表,

表A

\

表B

\

表A和表B中有兩條相同的記錄‘王五’,‘小高’

現在使用union看一下結果

\

可以看到‘王五’和‘小高’只有一條記錄,所以另一條記錄被覆蓋了,要想不被覆蓋可以使用union all


如圖所示,‘王五’和‘小高’沒有被覆蓋

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved