oracle 中的exists

来源:https://www.cnblogs.com/newxiaobai/archive/2017/12/28/8134602.html
-Advertisement-
Play Games

大家好,第一次發文章。以後會多多記錄自己的點滴生活。多積累,多學習。 今天給大家分享一篇自己學的的 oracle 中的 exists 用法,如有遺漏,錯誤和疏忽。請大家多多包涵,指正。 Where exists 首先,從網上查詢了很多資料。意思大致如下。 exists 返回值只是標記或者說一個標識的 ...


大家好,第一次發文章。以後會多多記錄自己的點滴生活。多積累,多學習。
今天給大家分享一篇自己學的的 oracle 中的 exists 用法,如有遺漏,錯誤和疏忽。請大家多多包涵,指正。
Where exists
首先,從網上查詢了很多資料。意思大致如下。
exists 返回值只是標記或者說一個標識的意思,並不會返回任何的數據。
Exists 是一個判斷條件。判斷 後續的語句 是否有返回值。有則為true。
返回為 true 的情況下 where 之前的語句則成立。
判斷 後續語句 無返回值 則為 flase
where 之前的語句不成立。也就是不返回值。

第二,用 exists 的相關子查詢
子查詢中的 查詢條件 依賴於外層父查詢的某個屬性值,稱這類查詢為相關子查詢。求解相關子查詢不能像求解不相關子查詢一樣,(這裡,我的理解是不相關子查詢是與父查詢完全獨立的查詢。)。相關子查詢,一定要一條一條,結合出父查詢中的條件,遍歷出結果。
如下為幾個例子。
empp 創建語句為
create table empp as select from emp where deptno=20;
select 
from emp where exists (select 1 from empp where emp.deptno=empp.deptno);
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO


  7369 SMITH      CLERK           7902 17-JAN-81        800                    20

  7566 JONES      MANAGER         7839 02-MAY-81       2975                    20

  7788 SCOTT      ANALYST         7566 19-MAY-87       3000                    20

  7876 ADAMS      CLERK           7788 23-JUN-87       1100                    20

  7902 FORD       ANALYST         7566 03-JAN-82       3000                    20

查詢結果如我們所說。先去找父表(emp)中第一條記錄,然後匹配deptno的值。然後找emp 第二條記錄,知道遍歷完emp表所有的記錄。
這就是我理解的相關子查詢。
另外之前我一直犯傻使用的格式為如下所示,希望大家不要再犯。
select * from emp where exists (select 1 from empp,emp where emp.deptno=empp.deptno);
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO


  7369 SMITH      CLERK           7902 17-JAN-81        800                    20

  7499 ALLEN      SALESMAN        7698 20-MAR-81       1600        300         30

  7521 WARD       SALESMAN        7698 22-MAR-81       1250        500         30

  7566 JONES      MANAGER         7839 02-MAY-81       2975                    20

  7654 MARTIN     SALESMAN        7698 28-OCT-81       1250       1400         30

  7698 BLAKE      MANAGER         7839 01-JUN-81       2850                    30

  7782 CLARK      MANAGER         7839 09-JUL-81       2450                    10

  7788 SCOTT      ANALYST         7566 19-MAY-87       3000                    20

  7839 KING       PRESIDENT            17-DEC-81       5000                    10

  7844 TURNER     SALESMAN        7698 08-OCT-81       1500          0         30

  7876 ADAMS      CLERK           7788 23-JUN-87       1100                    20

  7900 JAMES      CLERK           7698 03-JAN-82        950                    30

  7902 FORD       ANALYST         7566 03-JAN-82       3000                    20

  7934 MILLER     CLERK           7782 23-FEB-82       1300                    10

乍一看我覺得我寫的一點毛病沒有。但是為什麼遍歷出來了所有記錄呢,,最後思索了一下相關子查詢這幾個字。最後反應過來了。我這樣寫完了。exists中是一個完整的子查詢。單獨拿出來是完全可以執行的。因為之前已經說過。exists 是不返回具體的值的。它只負責判斷。判斷後續語句中是否有值,我這樣一寫就變成了不相關子查詢。所以就遍歷了exists前的語句。
所以相關子查詢一定要和父查詢中的條件關聯起來。
最後給一個 相關查詢為空不返回記錄的例子,用做對比。
select * from emp where exists (select 1 from empp where deptno=10);
no rows selected


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • awk是一種編程語言,主要用於在linux/unix下對文本和數據進行處理,是linux/unix下的一個工具。數據可以來自標準輸入、一個或多個文件,或其它命令的輸出。awk的處理文本和數據的方式:逐行掃描文件,預設從第一行到最後一行,尋找匹配的特定模式的行,併在這些行上進行你想要的操作。gawk是 ...
  • 背景 預設都是筆記本鍵盤才有Fn組合功能鍵,台式機很少有。今天領到的是聯想鍵盤,給我的台式機使用後F12很麻煩,必須Fn+F12才可以。 需求 恢復預設的F1~F12功能 方案 只需要下載驅動安裝: Windows 7 32-bit,Windows Vista 32-bit,Windows XP(3 ...
  • 常用功能差異 1. 鎖差異 : • Oracle鎖加在數據塊上 • InnoDB 是在索引上加鎖,所以MySQL鎖的粒度沒有Oracle 精細。 2. 導入導出 : • Oracle採用EXP /IMP ,EXPDP/IMPDP導入導出。 • MySQL採用mysqldump導出,導入可以採用管道或 ...
  • 操作系統 : CentOS7.3.1611_x64 go語言版本:1.8.3 linux/amd64 InfluxDB版本:1.1.0 influxdata主目錄結構 目錄解析說明: influxdb 為源碼的主目錄 influxql 實現了InfluxDB查詢語言的解析器(源碼主目錄裡面引用的是i ...
  • 近期閱讀了一些深度學習在文本分類中的應用相關論文( " 論文筆記 " ),同時也參加了CCF 大數據與計算智能大賽(BDCI)2017的一個文本分類問題的比賽:讓AI當法官,並取得了最終評測第四名的成績(比賽的具體思路和代碼參見 " github項目repo " )。因此,本文總結了文本分類相關的深 ...
  • 此篇說明對應的kettle版本是6.1,實際使用時7.x應該也是一樣的。 一、 kettle開發流程(規範步驟,防止出錯) (一) Kettle設置檢查 如果不加一下配置項,數據轉換後中文會出現亂碼,很難處理。 本地連接資源庫:配置項 defaultFetchSize 500 useCursorFe ...
  • 一般電子商務網站都會遇到如團購、秒殺、特價之類的活動,而這樣的活動有一個共同的特點就是訪問量激增、上千甚至上萬人搶購一個商品。然而,作為活動商品,庫存肯定是很有限的,如何控制庫存不讓出現超買,以防止造成不必要的損失是眾多電子商務網站程式員頭疼的問題,這同時也是最基本的問題。 ...
  • 配置管理概述 Hive從<install-dir>/conf/hive-default.xml中讀取它的預設配置 Hive配置目錄的位置可以通過設置HIVE_CONF_DIR環境變數的值來改變 配置變數可以被改變,通過<install-dir>/conf/hive-site.xml中重新定義(PS: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...