利用子查詢進行過濾
普通查詢:
selectorder_num
from
orderitems
where prod_id =
'rgan01
';
輸出▼order_num
-----------
20007
20008
selectcust_id
from
orders
where order_num in (20007,20008);
輸出▼cust_id
----------
1000000004
1000000005
利用子查詢:
selectcust_id
from
orders
where order_num in (
select
order_num
from
orderitems
where prod_id =
'rgan01
');
輸出▼cust_id
----------
1000000004
1000000005
分析▼在select語句中,子查詢總是從內向外處理。在處理上面的select語句時,dbms實際上執行了兩個操作。
首先,它執行下面的查詢:
select order_num from orderitems where prod_id='rgan01
'
此查詢返回兩個訂單號:20007和20008。然後,這兩個值以in操作符要求的逗號分隔的格式傳遞給外部查詢的where子句。外部查詢變成:
select cust_id from orders where order_num in (20007,20008)
包含子查詢的select語句難以閱讀和除錯,它們在較為複雜時更是如此。如上所示,把子查詢分解為多行並進行適當的縮排,能極大地簡
化子查詢的使用。
SQL 使用子查詢
sql還允許建立子查詢,巢狀再其他查詢中的查詢。下面舉幾個栗子來理解一下 現在結合1 2這兩個查詢,把第乙個查詢 返回訂單號的那乙個 變為子查詢 select cust id from orders where order num in select order num from orderitem...
SQL多條件查詢子查詢SQL多條件查詢子查詢
多條件搜尋時where 1 1並不高效,如果使用這種方法,在資料庫中會做全表查詢 對每行資料都進行掃瞄比對 會無法使用索引等優化查詢的策略,建立的索引會暫時失效。case函式 case必須和end一起使用,下接when then select 數學成績 case when math 100 then...
mysql sql 子查詢語句 SQL子查詢
子查詢或內部查詢或巢狀查詢在另乙個sql查詢的查詢和嵌入式where子句中。子查詢用於返回將被用於在主查詢作為條件的資料,以進一步限制要檢索的資料。子查詢可以在select,insert,update使用,而且隨著運算子如delete語句 in,between 等.這裡有一些規則,子查詢必須遵循 子...