程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle子查詢過程中值得注意的事項

Oracle子查詢過程中值得注意的事項

編輯:Oracle數據庫基礎

我們都知道HAVING中我們可以用Oracle子查詢 ,而且兩個查詢的語句的結果是可做集合操作的,如果你想知道HAVING中我們是如何使用Oracle子查詢的?以及兩個查詢的語句的結果是可做集合的實際操作是如何進行的?以下的內容就有相關的答案。

1. 查詢語句可以嵌套

例如: SELECT …… FROM (SELECT …… FROM表名1, [表名2, ……] WHERE 條件) WHERE 條件2;

2. 何處可用Oracle子查詢?

當查詢條件是不確定的條件時

DML(insert, update,delete)語句裡也可用子查詢

HAVING裡也可用子查詢

3. 兩個查詢語句的結果可以做集合操作

例如:

並集UNION(去掉重復記錄)

並集UNION ALL(不去掉重復記錄)

10

J2EE @ zxw

差集MINUS,

交集INTERSECT

4. 子查詢的注意事項

先執行括號裡面的SQL語句,一層層到外面

內部查詢只執行一次

如果裡層的結果集返回多個,不能用= > < >= <=等比較符要用IN.

5. Oracle子查詢的例子(1)

  1. SQL> select title,avg(salary) from s_emp   
  2. group by title Having avg(salary) =   
  3. (select min(avg(salary)) from s_emp   
  4. group by title);  

找到最低平均工資的職位名稱和工資

子查詢的例子(2)

Oracle子查詢可以用父查詢裡的表名

這條SQL語句是對的:

  1. SQL>select cty_name from city where st_code in   
  2. (select st_code from state where st_name='TENNESSEE' and   
  3. city.cnt_code=state.cnt_code);  

說明:父查詢調用子查詢只執行一次.

6.取出結果集的80 到100的SQL語句

Oracle處理每個結果集只有一個ROWNUM字段標明它的邏輯位置,

並且只能 用ROWNUM<100, 不能用ROWNUM>80。

以下是經過分析後較好的兩種Oracle取得結果集80到100間的SQL語句

( ID是唯一關鍵字的字段名 )

語句寫法:

  1. SQL>select * from (   
  2. ( select rownum as numrow, c.* from (   
  3. select [fIEld_name,...] 
    from table_name where 條件1 order by 條件2) c)   
  4. where numrow > 80 and numrow <= 100 )  

order by 條件3;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved