国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

MS-SQL的子查詢表達式

2024-07-21 02:05:27
字體:
來源:轉載
供稿:網友
    1.exists         exists ( subquery )
   
exists 的參數是一個任意的select語句, 或者說子查詢。系統對子查詢進行運算以判斷它是否返回行。 如果它至少返回一行,那么 exists 的結果就為"真"; 如果子查詢沒有返回行,那么 exists 的結果是"假"。
    子查詢可以引用來自周圍的查詢的變量,這些變量在該子查詢的任何一次計算中都起常量的作用。
    這個子查詢通常只是運行到能判斷它是否可以生成至少一行為止, 而不是等到全部結束。在這里寫任何有副作用的子查詢都是不明智的(比如調用序列函數);這些副作用是否發生是很難判斷的。
    因為結果只取決于是否會返回行,而不取決于這些行的內容, 所以這個子查詢的輸出列表通常是無關緊要的。一個常用的編碼習慣是用下面的形式寫所有的exists測試 exists(select 1 where ...)。不過這條規則有例外, 比如那些使用 intersect 的子查詢。
    下面這個簡單的例子類似在col2上的一次內聯接,但是它為每個 tab1的行生成最多一個輸出,即使存在多個匹配tab2的行也如此∶
    select col1 from tab1
    where exists(select 1 from tab2 where col2 = tab1.col2);

 2.in          expression in (subquery)
   
in 的這種形式的右手邊是一個圓括弧括起來的子查詢, 它必須只返回一個字段。左手邊表達式對子查詢的結果的每一行進行一次計算和比較。 如果找到任何等于子查詢行的情況,那么 in 的結果就是"真"。 如果沒有找到相等行,那么結果是"假"(包括子查詢沒有返回任何行的特殊例子)。
    請注意如果左手邊表達式生成 null,或者沒有相等的右手邊數值, 并且至少有一個右手邊行生成 null,那么 in 構造的結果將是 null,而不是假。 這個行為是遵照 sql 處理布爾和 null 值組合時的規則定的。
    和 exists 一樣,假設子查詢將被完成運行完全是不明智的。 row_constructor in (subquery)   這種形式的 in 的左手邊是一個行構造器,右手邊是一個圓括弧括起來的子查詢,它必須返回和左手邊返回的行中表達式所構成的完全一樣多的字段。 左手邊表達式就子查詢結果的每一行進行計算很比較。如果找到任意相等的子查詢行,則 in 的結果為"真"。如果沒有找到相等行, 那么結果為"假"(包括子查詢不返回行的特殊例子)。 通常,表達式或者子查詢行里的 null 是按照 sql 布爾表達式的一般規則進行組合的。 如果兩個行對應的成員都是非空并且相等,那么認為這兩行相等;如果任意對應成員為非空且不等,那么該兩行不等; 否則這樣的行比較的結果是未知(null)。如果所有行的結果要么是不等, 要么是 null,并且至少有一個 null,那么 in 的結果是 null。

 3.not in             expression not in (subquery)
   
右手邊是一個用圓括弧包圍的子查詢,它必須返回一個字段。左手邊表達式就子查詢結果的每一行進行計算和比較。如果只找到不相等的子查詢行(包括子查詢不返回行的特殊情況),那么not in 的結果是"真"。 如果找到任何相等行,則結果為"假"。     請注意如果左手邊表達式返回空,或者如果沒有等于右手邊的值,并且至少一個右手邊行生成空, 那么 not in 構造的結果將是空,而不是真。這是根據 sql 對布爾和空值組合的一般規則制定的。
    和 exists 一樣,假設子查詢會完全結束是不明智的。 row_constructor not in (subquery)not in 的這種形式左手邊是一個行構造器,其右手邊是一個圓括弧括起來的子查詢, 它必須返回和左手邊表達式返回的行一樣多的字段。 左手邊表達式對子查詢的結果的每一行進行一次計算和比較。 如果只出現不等于子查詢行的情況,那么 not in 的結果就是"真"。 (包括子查詢沒有返回任何行的特殊例子)。如果找到相等行,那么結果是"假"。
    和通常一樣,表達式或者子查詢行里的 null 是按照 sql 布爾表達式的一般規則進行組合的。 如果兩個行對應的成員都是非空并且相等,那么認為這兩行相等;如果任意對應成員為非空且不等,那么該兩行不等; 否則這樣的行比較的結果是未知(null)。如果所有行的結果要么是不等, 要么是 null,并且至少有一個 null,那么 not in 的結果是 null。

 4.any/someexpression operator any (subquery)
   
expression operator some (subquery)
    這種形式的 any 右手邊是一個圓括弧括起來的子查詢, 它必須返回一個字段。左手邊表達式將使用給出的 operator對子查詢的結果的每一行進行一次計算和比較。目前如果獲得任何真值結果,那么 any 的結果就是"真"。 如果沒有找到真值結果,那么結果是"假"(包括子查詢沒有返回任何行的特殊例子)。     some 是 any 的同意詞。 in 等效于 = any。
    請注意如果沒有任何成功并且至少有一個右手邊行為該操作符結果生成 null, 那么 any 構造的結果將是null,而不是 false。 這個行為是遵照 sql 處理布爾和 null 值組合時的規則定的。
    和 exists 一樣,假設子查詢將被完成運行完全是不明智的。 row_constructor operator any (subquery)

  row_constructor operator some (subquery)

    這種形式的左手邊是一個行構造器,右手邊是一個圓括弧括起來的子查詢, 它必須返回和左手邊列表給出的表達式一樣多的列。左手邊表達式將使用給出的 operator對子查詢的結果的每一行進行一次計算和比較。 目前,系統只允許使用 = 或 <> 操作符處理逐行的 any 構造。 如果分別找到相等或者不相等的行,那么 any 的結果就是 "真"。如果沒有找到這樣的行,那么結果是"假"(包括子查詢沒有返回任何行的特殊例子)。
    通常,表達式或者子查詢行里的 null 是按照 sql 布爾表達式的一般規則進行組合的。 如果兩個行對應的成員都是非空并且相等,那么認為這兩行相等;如果任意對應成員為非空且不等,那么該兩行不等; 否則這樣的行比較的結果是未知(null)。如果至少有一個 null 行結果, 那么 any 的結果將是true 或者 null。

  5.all           expression operator all(subquery)
   
all 的這種形式的右手邊是一個圓括弧括起來的子查詢, 它必須只返回一列。左手邊表達式將使用給出的 operator對子查詢的結果的每一行進行一次計算和比較。該操作符必須生成布爾結果.如果所有行的結果都為"真",(包括子查詢沒有返回任何行的特殊例子)。 那么 all 的結果就是"真"。如果沒有存在任何假值結果,那么結果是"假"。

      not in 等效于 <> all。

     請注意如果沒有運算失敗但是至少有一個右手邊行為該操作符的結果生成 null 值, 那么 all 構造的結果將是 null,而不是 true。 這個行為是遵照 sql 處理布爾和 null 值組合時的一般規則定的。
    和 exists 一樣,假設子查詢將被完成運行完全是不明智的。

  row_constructor operator all (subquery)

 all 的這種形式的左手邊是一個行構造器,右手邊是一個圓括弧括起來的子查詢,它必須返回和左手邊行給出的表達式一樣多的字段。 左手邊表達式將使用給出的 operator對子查詢的結果的每一行進行一次計算和比較。 目前系統只允許使用 = 和 <> 操作符處理逐行的 all 查詢。 如果所有子查詢都是相等或者不相等的行,那么 all 的結果就是"真"。(包括子查詢沒有返回任何行的特殊例子)。 如果分別有任何不相等或者相等的行,那么結果是"假"。

 通常,表達式或者子查詢行里的 null 是按照 sql 布爾表達式的一般規則 進行組合的。如果兩個行對應的成員都是非空并且相等,那么認為這兩行 相等;如果任意對應成員為非空且不等,那么該兩行不等; 否則這樣的行比較的結果是未知(null)。如果至少有一個 null 行結果, 那么 all 的結果就不可能是true;它將會是 false或者 null。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 齐河县| 宁化县| 山东省| 高邮市| 长岛县| 浮山县| 雅安市| 南城县| 洛阳市| 开远市| 青川县| 郴州市| 西平县| 乡宁县| 民丰县| 南部县| 寻甸| 永德县| 海阳市| 安化县| 吉木乃县| 枝江市| 安西县| 利辛县| 理塘县| 马关县| 博罗县| 井研县| 清远市| 绍兴市| 海宁市| 广平县| 乌恰县| 安多县| 广东省| 易门县| 巴林左旗| 新泰市| 甘洛县| 黄龙县| 竹北市|