国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Mysql - Mysql聯合查詢UNION和UNION ALL的使用介紹

Mysql聯合查詢UNION和UNION ALL的使用介紹

2020-03-24 15:09MYSQL教程網 Mysql

本文詳細介紹了Mysql的聯合查詢命令UNION和UNION ALL,總結了使用語法和注意事項,以及學習例子和項目例子,需要的朋友可以參考下

一、UNION和UNION ALL的作用和語法

UNION 用于合并兩個或多個 SELECT 語句的結果集,并消去表中任何重復行。
UNION 內部的 SELECT 語句必須擁有相同數量的列,列也必須擁有相似的數據類型。
同時,每條 SELECT 語句中的列的順序必須相同.
SQL UNION 語法:

復制代碼 代碼如下:
SELECT column_name FROM table1
UNION
SELECT column_name FROM table2


注釋:默認地,UNION 操作符選取不同的值。如果允許重復的值,請使用 UNION ALL。
當 ALL 隨 UNION 一起使用時(即 UNION ALL),不消除重復行
SQL UNION ALL 語法

復制代碼 代碼如下:
SELECT column_name FROM table1
UNION ALL
SELECT column_name FROM table2


注釋:另外,UNION 結果集中的列名總是等于 UNION 中第一個 SELECT 語句中的列名。
注意:1、UNION 結果集中的列名總是等于第一個 SELECT 語句中的列名
2、UNION 內部的 SELECT 語句必須擁有相同數量的列。列也必須擁有相似的數據類型。同時,每條 SELECT 語句中的列的順序必須相同

 


二、union的用法及注意事項

union:聯合的意思,即把兩次或多次查詢結果合并起來。
要求:兩次查詢的列數必須一致
推薦:列的類型可以不一樣,但推薦查詢的每一列,想對應的類型以一樣
可以來自多張表的數據:多次sql語句取出的列名可以不一致,此時以第一個sql語句的列名為準。
如果不同的語句中取出的行,有完全相同(這里表示的是每個列的值都相同),那么union會將相同的行合并,最終只保留一行。也可以這樣理解,union會去掉重復的行。
如果不想去掉重復的行,可以使用union all。
如果子句中有order by,limit,需用括號()包起來。推薦放到所有子句之后,即對最終合并的結果來排序或篩選。
如:

復制代碼 代碼如下:
(select * from a order by id) union (select * from b order id);

 

在子句中,order by 需要配合limit使用才有意義。如果不配合limit使用,會被語法分析器優化分析時去除。

三、學習例子

下面的例子中使用的原始表:
Employees_China:

復制代碼 代碼如下:
E_ID E_Name
01 Zhang, Hua
02 Wang, Wei
03 Carter, Thomas
04 Yang, Ming


Employees_USA:

復制代碼 代碼如下:
E_ID E_Name
01 Adams, John
02 Bush, George
03 Carter, Thomas
04 Gates, Bill

 

使用 UNION 命令實例

列出所有在中國和美國的不同的雇員名:

復制代碼 代碼如下:
SELECT E_Name FROM Employees_China
UNION
SELECT E_Name FROM Employees_USA


結果:

復制代碼 代碼如下:
E_Name
Zhang, Hua
Wang, Wei
Carter, Thomas
Yang, Ming
Adams, John
Bush, George
Gates, Bill


注釋:這個命令無法列出在中國和美國的所有雇員。在上面的例子中,我們有兩個名字相同的雇員,他們當中只有一個人被列出來了。UNION 命令只會選取不同的值。

 

使用 UNION ALL 命令實例

UNION ALL 命令和 UNION 命令幾乎是等效的,不過 UNION ALL 命令會列出所有的值。

復制代碼 代碼如下:
SQL Statement 1
UNION ALL
SQL Statement 2

 

實例:
列出在中國和美國的所有的雇員:

復制代碼 代碼如下:
SELECT E_Name FROM Employees_China
UNION ALL
SELECT E_Name FROM Employees_USA


結果

復制代碼 代碼如下:
E_Name
Zhang, Hua
Wang, Wei
Carter, Thomas
Yang, Ming
Adams, John
Bush, George
Carter, Thomas
Gates, Bill

 


四、項目使用例子

web項目中經常會碰到整站搜索的問題,即客戶希望在網站的搜索框中輸入一個詞語,然后在整個網站中只要包含這個詞的頁面都要出現在搜索結果中。由于一個web項目不可能用一張表就全部搞定的,所以這里一般都是要用union聯合搜索來解決整個問題的。

下面列舉一下本次使用的union聯合搜索的sql語句:

 

復制代碼 代碼如下:


select * from

 

(SELECT `id`,`subject` FROM `article` WHERE `active`='1' AND `subject` LIKE '%調整圖片%' ORDER BY `add_time` DESC)

as t1

union all

select * from

(SELECT `id`,`class_name` AS `subject` FROM `web_class` WHERE `active`='1' AND `class_name` LIKE '%調整圖片%' ORDER BY `class_id` DESC)

as t2

union

select * from

(SELECT `id`,`subject` FROM `article` WHERE `active`='1' AND (`subject` LIKE '%調整%' OR `subject` LIKE '%圖片%') ORDER BY `add_time` DESC)

as t3;

 

以上SQL語句的聯合查詢主要用到了union all和union,至于這兩者的區別就是union all會列舉所有符合條件的查詢結果,而union會將所有符合條件的查詢結果做一下去除重復結果的篩選。

對于以上SQL語句的解釋就是由于article表和web_class表分屬兩個不同的表,所以這里不用去除重復結果。然而以上聯合查詢的第三個分支的sql查詢語句是由分詞然后組合出來的查詢語句,這條sql語句查詢的結果是肯定包含第一個分支sql語句的查詢結果的,這里就顯得沒必要了,所以沒有使用all而去掉重復的查詢結果。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 内地农村三片在线观看 | 国产免费久久 | 成人欧美一区二区 | 99热最新| 日韩成人免费 | 国产毛片18片毛一级特黄日韩a | 看亚洲一级毛片 | 欧美成人一区二免费视频软件 | 久久久久久综合 | 精品久久在线 | 在线亚洲精品 | 国产乱码精品一区二区三区av | 你懂的免费在线观看 | 欧美日韩在线视频观看 | 精品女同一区二区三区在线绯色 | 亚洲一区 日韩精品 中文字幕 | 久久精品国产99国产精品 | 亚洲免费视频观看 | 国精产品一区二区三区有限公司 | 亚洲狠狠爱一区二区三区 | 狠狠爱天天操 | 视频一区在线播放 | 欧洲亚洲精品久久久久 | av在线精品| 国产精品久久久久无码av | 免费观看特级毛片 | 中文字幕乱码一区二区三区 | 欧洲精品在线观看 | 亚洲高清视频一区二区 | 久久精品91 | 久久99久久99精品免观看粉嫩 | 国产精品爱久久久久久久 | 99久久精品一区二区成人 | 国产精品久久精品 | 一级成人av| 国产一区二 | 亚洲一区自拍 | 久久99精品久久久久 | 在线观看免费视频国产 | 久久久久国产精品 | 欧美一级全黄 |