當前位置:首頁 » 操作系統 » 資料庫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可以理解為大於子查詢中返回的任意一個值,因此只要大於最小值即可。滿意請採納。

熱點內容
access資料庫登陸 發布:2025-04-07 04:56:31 瀏覽:604
rubyjava 發布:2025-04-07 04:56:29 瀏覽:593
java建窗體 發布:2025-04-07 04:56:25 瀏覽:841
安卓界面怎麼開發 發布:2025-04-07 04:55:49 瀏覽:919
百寶箱密碼在哪裡面修改密碼 發布:2025-04-07 04:55:47 瀏覽:158
蘋果安卓怎麼傳視頻 發布:2025-04-07 04:42:10 瀏覽:487
96編譯器是做什麼的 發布:2025-04-07 04:33:45 瀏覽:875
cphp數組 發布:2025-04-07 04:32:36 瀏覽:138
centos下搭建dns伺服器 發布:2025-04-07 04:08:03 瀏覽:662
halcon標定演算法 發布:2025-04-07 04:01:29 瀏覽:342