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