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

來源:互聯網
上載者:User

標籤:查詢   sig   預設   union all   where   作用   order by   use   limit   

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

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

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

 

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

 

注釋:另外,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);

SELECT ‘dj‘ AS `type`, djje AS je, djje_paytime AS TIME
FROM ecs_order_info
UNION SELECT ‘zq‘ AS `type`, zqdje AS je, zqdje_paytime AS TIME
FROM ecs_order_info
UNION SELECT ‘wk‘ AS `type`, wkje AS je, wkje_paytime AS TIME
FROM ecs_order_info
ORDER BY `time` DESC
LIMIT 0 , 30

在聯合中語句中可以設定一個常量來區分:"第一行" AS username

$sql = "SELECT * FROM ( SELECT order_sn, ddly, user_id, brand_id, consignee, address, order_id,  ‘訂金‘ AS  TYPE ,djje_way AS pay_way,  djje AS je, djje_status AS ostatus, djje_paytime AS TIME FROM ecs_order_info UNION SELECT order_sn, ddly, user_id, brand_id, consignee, address, order_id,  ‘中期款‘ AS TYPE ,zqdje_way AS pay_way, zqdje_status AS ostatus, zqdje AS je, zqdje_paytime AS TIME FROM ecs_order_info  UNION SELECT order_sn, ddly, user_id, brand_id, consignee, address, order_id,  ‘尾款‘ AS TYPE , wkje_way AS pay_way, wkje_status AS ostatus, wkje AS je, wkje_paytime AS TIME FROM ecs_order_info)A";
$sql .= " WHERE A.ostatus =1 ORDER BY A.`TIME` DESC LIMIT 100";

 

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.