萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> Mysql子查詢和聯合(UNION)查詢詳解

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

在mysql中UNION查詢是可以聯合多個表,union只是mysql中聯合查詢的一個小點了,下面我來給大家介紹各種mysql中聯合查詢的語句,大家可參考參考。

查詢:
 在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只是將兩個結果聯結起來一起顯示,並不是聯結兩個表

copyright © 萬盛學電腦網 all rights reserved