Mysql子查詢和聯合(UNION)查詢詳解

來源:互聯網
上載者:User

查詢:
 在select查詢中,又嵌套了一個select查詢。一個是外層查詢,另一個是內層查詢。
Where子查詢

就是在where查詢語句有一個select語句,把內層查詢的結果當做外層查詢的條件。

From子查詢

在from 查詢語句中,有一個select語句,把內層查詢結果作為一張暫存資料表,供外層再一次查詢。

區別:

對於不是唯一取值的列,使用where子查可能會出現不正確的結果。如果用from,有分組的情況下,我們要通過排序把需要的記錄放在第一的位置上。

Exists

#查詢有商品的欄目

 代碼如下 複製代碼
select cat_id,cat_name from category where cat_id
in
(select distinct cat_id from goods);

 
我們還可以通過Exists 子查詢:

 代碼如下 複製代碼
select cat_id,cat_name from category where exists
 (select * from goods where goods.cat_id = category.cat_id);

 
執行過程:

它和前面我們講的where、from子查詢不同,where和from子查詢只執行一次,而exists子查詢要查詢多次(有多少行記錄就執行多少次)。


SQL UNION 操作符

UNION 操作符用於合并兩個或多個 SELECT 語句的結果集。

請注意,UNION 內部的 SELECT 語句必須擁有相同數量的列。列也必須擁有相似的資料類型。同時,每條 SELECT 語句中的列的順序必須相同。

SQL UNION 文法

 代碼如下 複製代碼

SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2

注釋:預設地,UNION 操作符選取不同的值,即UNION是去了重的。如果允許重複的值,請使用 UNION ALL。

SQL UNION ALL 文法

 代碼如下 複製代碼

SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2

另外,UNION 結果集中的列名總是等於 UNION 中第一個 SELECT 語句中的列名。

UNION 指令的目的是將兩個 SQL 陳述式的結果合并起來。從這個角度來看, UNION 跟 JOIN 有些許類似,因為這兩個指令都可以由多個表格中擷取資料。union只是將兩個結果連接起來一起顯示,並不是連接兩個表

聯繫我們

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