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

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:645
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:936
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:632
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:821
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:731
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1066
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:299
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:160
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:852
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:763