exists運算子是用來檢查每一行是否匹配子查詢,也可以這麼認為exists就是用來測試子查詢的結果是否為空,如果結果集為空則匹配結果為false,否則匹配結果為true。
下面我通過oracle表舉幾個例子,下面我給出三張表,t_book,t_category,t_reader。
t_book的字段: fid,fname,fyearpublished,fcategoryid
t_category的字段: fid,fname
t_reader的字段: fid,fname,fyearofbirth,fcity,fprovince,fyearofjoin
查詢條件:測試是否存在山東省的讀者
select * from t_book where exists這句sql語句對t_book表中的每行資料進行匹配,測試是否存在山東省的讀者!如果匹配則返回資料,不過不匹配則不返還資料!( select * from t_reader where fprovince='shandong'
)
執行結果如下:
其實上面這個列子在實際中並不常用,exists運算子只有和相關子查詢一起使用才更有意義,在相關的子查詢中引用外部查詢中的這個字段,這樣在匹配外部
子查詢中的每行資料的時候,相關子查詢就會根據當前行的資訊來進行匹配判讀,這樣就可以實現豐富的功能。
條件:檢索在2023年以前出版的圖書的圖書類別:
select這句sql對t_category表中的每一行資料進行匹配,測試t_book表中是否在fcategoryid字段值等於當前類別主鍵值且出版年份在2023年之前的書籍。*from t_category a where
exists
(
select
*from t_book where a.fid=
t_book.fcategoryid
and t_book.fyearpublished<
1950
)
結果:
關於邏輯運算子的理解
int i 0 int n 0 1 n i printf i d n i printf n d n n 0 n i printf i d n i printf n d n n return 0 在網上看到這樣一段 執行結果如下 輸出 i 1 n 1i 2 n 1經過仔細思量,終於理解,現將其記錄下來...
關於運算子
運算子 根據運算元的個數將運算子分為 一元運算子 二元運算子 三元運算子 根據功能可以分為如下 1 算術運算子 自增運算子 自增1 自減運算子 自減1 自增 自減運算子不參與賦值時,前置和後置一樣 賦值時 後置運算子 先賦值,後運算 前置運算子 先運算,後賦值 注意 當 運算子兩邊有乙個運算元為字串...
關於運算子
運算子包括 not div mod and shl shr as or xor in is 其中 not 是一元運算子 有時是一元,有時是二元 其他都是二元運算子.一元運算子在運算數的前面,例外,也可以在後面,如 p 二元運算子在運算數中間.運算子的行為隨運算數的型別而變,譬如 not 面對整數是對...