《Mysql入門Mysql聯合查詢UNION和UNION ALL的使用介紹》要點:
本文介紹了Mysql入門Mysql聯合查詢UNION和UNION ALL的使用介紹,希望對您有用。如果有疑問,可以聯系我們。
一、UNION和UNION ALL的作用和語法MYSQL學習
UNION 用于合并兩個或多個 SELECT 語句的結果集,并消去表中任何重復行.
UNION 內部的 SELECT 語句必須擁有相同數量的列,列也必須擁有相似的數據類型.
同時,每條 SELECT 語句中的列的順序必須相同.
SQL UNION 語法:
MYSQL學習
二、union的用法及注意事項MYSQL學習
union:聯合的意思,即把兩次或多次查詢結果合并起來.
要求:兩次查詢的列數必須一致
推薦:列的類型可以不一樣,但推薦查詢的每一列,想對應的類型以一樣
可以來自多張表的數據:多次sql語句取出的列名可以不一致,此時以第一個sql語句的列名為準.
如果不同的語句中取出的行,有完全相同(這里表示的是每個列的值都相同),那么union會將相同的行合并,最終只保留一行.也可以這樣理解,union會去掉重復的行.
如果不想去掉重復的行,可以使用union all.
如果子句中有order by,limit,需用括號()包起來.推薦放到所有子句之后,即對最終合并的結果來排序或篩選.
如:
MYSQL學習
在子句中,order by 需要配合limit使用才有意義.如果不配合limit使用,會被語法分析器優化分析時去除.MYSQL學習
三、學習例子
下面的例子中使用的原始表:
Employees_China:
MYSQL學習
使用 UNION 命令實例MYSQL學習
列出所有在中國和美國的不同的雇員名:
MYSQL學習
使用 UNION ALL 命令實例MYSQL學習
UNION ALL 命令和 UNION 命令幾乎是等效的,不過 UNION ALL 命令會列出所有的值.
MYSQL學習
實例:
列出在中國和美國的所有的雇員:
MYSQL學習
四、項目使用例子MYSQL學習
web項目中經常會碰到整站搜索的問題,即客戶希望在網站的搜索框中輸入一個詞語,然后在整個網站中只要包含這個詞的頁面都要出現在搜索結果中.由于一個web項目不可能用一張表就全部搞定的,所以這里一般都是要用union聯合搜索來解決整個問題的.MYSQL學習
下面列舉一下本次使用的union聯合搜索的sql語句:MYSQL學習
(SELECT `id`,`subject` FROM `article` WHERE `active`='1' AND `subject` LIKE '%調整圖片%' ORDER BY `add_time` DESC) MYSQL學習
as t1MYSQL學習
union allMYSQL學習
select * from MYSQL學習
(SELECT `id`,`class_name` AS `subject` FROM `web_class` WHERE `active`='1' AND `class_name` LIKE '%調整圖片%' ORDER BY `class_id` DESC) MYSQL學習
as t2MYSQL學習
unionMYSQL學習
select * from MYSQL學習
(SELECT `id`,`subject` FROM `article` WHERE `active`='1' AND (`subject` LIKE '%調整%' OR `subject` LIKE '%圖片%') ORDER BY `add_time` DESC) MYSQL學習
as t3;
MYSQL學習
以上SQL語句的聯合查詢主要用到了union all和union,至于這兩者的區別就是union all會列舉所有符合條件的查詢結果,而union會將所有符合條件的查詢結果做一下去除重復結果的篩選.MYSQL學習
對于以上SQL語句的解釋就是由于article表和web_class表分屬兩個不同的表,所以這里不用去除重復結果.然而以上聯合查詢的第三個分支的sql查詢語句是由分詞然后組合出來的查詢語句,這條sql語句查詢的結果是肯定包含第一個分支sql語句的查詢結果的,這里就顯得沒必要了,所以沒有使用all而去掉重復的查詢結果.MYSQL學習
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/4056.html