SQL必知必會 筆記 第十四章 組合查詢,必知組合查詢

來源:互聯網
上載者:User

SQL必知必會 筆記 第十四章 組合查詢,必知組合查詢
14.1組合查詢

多數SQL查詢都只包含從一個或多個表中返回單條SELECT語句。但是,SQL與允許執行多個查詢(多條SELECT語句),並將結果作為單個查詢結果集返回。這些組合查詢通常稱為並(union)或符合查詢(compound query)。
有兩種基本情況,其中需要使用組合查詢。
(1)在單個查詢中從不同的表類似返回結構資料。
(2)對單個表執行多個查詢,按單個查詢返回資料。

14.2建立組合查詢

可用UNION操作符來組合數條SQL查詢。利用UNION,可給出多條SELECT語句,將他們的結果組合成單個結果集。

14.2.1使用UNION

UNION的使用很簡單。所需做的只是給出每條SELECT語句,在各條語句之間放上關鍵字UNION。

SELECT cust_name,cust_contact,cust_emailFROM CustomersWHERE cust_state IN ('IL','IN','MI')UNIONSELECT cust_name,cust_contact,cust_emailFROM CustomersWHERE cust_name = 'Fun4All';

UNION指示DBMS執行兩條SELECT語句,並把輸出組合成單個查詢結果集。

14.2.2UNION規則

(1)UNION必須由兩條或兩條以上的SELECT語句組成,語句之間用關鍵字UNION分隔。
(2)UNION中的每個查詢必須包含相同的列、運算式或聚集合函式(不過各個列不需要以相同的次序列出)。
(3)列資料類型必須相容:類型不必完全相同,但必須是DBMS可以隱含地轉換的類型。

14.2.3包含或取消重複的行

UNION從查詢結果集中自動去除了重複的行。這是UNIO的預設行為,但是如果願意,可以改變它。事實上,如果想返回所有匹配行,可使用UNION ALL而不是UNION。

SELECT cust_name,cust_contact,cust_emailFROM CustomersWHERE cust_state IN ('IL','IN','MI')UNION ALLSELECT cust_name,cust_contact,cust_emailFROM CustomersWHERE cust_name = 'Fun4All';

使用UNION ALL,DBMS不取消重複的行。

14.2.4對組合查詢結果排序

在用UNION組合查詢時,只能使用一條ORDER BY子句,他必須出現在最後一條SELECT語句之後。

SELECT cust_name,cust_contact,cust_emailFROM CustomersWHERE cust_state IN ('IL','IN','MI')UNION ALLSELECT cust_name,cust_contact,cust_emailFROM CustomersWHERE cust_name = 'Fun4All'ORDER BY cust_name,cust_contact;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.