當前位置:首頁 » 操作系統 » 資料庫any

資料庫any

發布時間: 2023-06-09 15:55:14

資料庫當中:如果子查詢中返回的是單列多值,則必須在子查詢前使用關鍵字all或any

我來回答一下,這個問題不好說清楚....

學生表

-- 查詢1、查詢出 年齡 = 17 的所有學生

select t.* from學生表 t where t.年齡 = 17;

-- 查詢2、查詢出 年齡 = 17或者 = 18的所有學生

select t.* from 學生表 t where t.年齡in (17, 18);

-- 查詢3、查詢出 性別 = 男 的所有學生,這里因為子查詢「學生表 t2」只有一條記錄滿足條件(即單列單行),所以查詢不會報錯

select t.* from 學生表 t where t.年齡 = (

select t2.年齡

from 學生表 t2 where t2.性別 = '男'

);

-- 查詢4、查詢出 年齡 = 17 的所有學生,這里因為子查詢 「學生表 t2」 有兩條數據符合條件(即單列多行),而 「t.性別 =」 只能等於某一個給定的值,參考 「查詢1」 ,所以執行查詢會報錯;這里把 =替換為 =any 或者 in 就可以正常查詢,因為 =any 和 in 是告訴 「t.性別」 要找的數據必須在我范圍內;而 <> any 和 not in 則表示取反的意思,告訴 「t.性別」 要找的數據必須排除我給你的范圍。

select t.* from 學生表 t where t.性別 = (

select t2.性別

from 學生表 t2 where t2.年齡 = 17

);

-- ANY 和 ALL 的具體用法,這里不再贅述。。。。

-- 查詢5、多列多值,參考查詢4,子查詢 「學生表 t2」 滿足條件的有兩條,如下查詢:

select t.* from 學生表 t where t.年齡 || t.性別=any (

select t2.年齡 || t2.性別

from 學生表 t2 where t2.性別 = '男'

);

注1:其實 ANY 和 ALL 不涉及什麼多行多列,查詢5隻是一種另類的解決方案。

注2:「||」 雙數線表示 在 ORACLE 資料庫中用來做合並的關鍵字元。

總結:

首先,請不要在查詢1、2、3、4、5上過於糾結,說什麼我可以用更簡單的SQL實現你的查詢1、2、3、4、5,我這里僅僅是為了舉例說明。

select t.* from 學生表 t where t.年齡 = 17;

= 後面可以是一個 特定的值,可以是一個 子查詢等等,但是需要保證 = 後面的任何運算或查詢只返回一個值,不然SQL是無法執行的;

而 any 和 all 以及 in,表示的是一個數據范圍,即單列多行,而使用 雙豎線 是把 多列合並為一列來處理,最終還是模擬的單列多行。

② 資料庫比較操作符>any表示什麼意思、

>any可以理解為大於子查詢中返回的任意一個值,因此只要大於最小值即可。滿意請採納。

熱點內容
cl編譯選項 發布:2025-05-14 11:09:25 瀏覽:620
自製演算法表 發布:2025-05-14 11:05:18 瀏覽:357
android獲取手機聯系人 發布:2025-05-14 10:59:30 瀏覽:141
電腦怎麼選擇配置 發布:2025-05-14 10:46:12 瀏覽:326
電腦怎麼不顯示手機連接伺服器失敗 發布:2025-05-14 10:42:28 瀏覽:10
安卓如何下載lv手游 發布:2025-05-14 10:35:45 瀏覽:384
pythondict添加key 發布:2025-05-14 10:33:59 瀏覽:382
柱子箍筋加密區長度 發布:2025-05-14 10:18:29 瀏覽:352
雲伺服器和內網穿透哪個好 發布:2025-05-14 10:16:41 瀏覽:627
安徽新能源網路配置是什麼 發布:2025-05-14 10:06:24 瀏覽:631