sql中關聯查詢

2021-09-02 16:27:47 字數 1211 閱讀 6746

sql中 except、intersect用法

except 返回兩個結果集的差(即從左查詢中返回右查詢沒有找到的所有非重複值)。

intersect 返回 兩個結果集的交集(即兩個查詢都返回的所有非重複值)。

union返回兩個結果集的並集。

union,except, intersect關鍵字用於對集合的查詢,它們的作用分別為:

union:合併兩個或多個 select 語句的結果集,並把重複結果去除;

unionall:合併兩個或多個 select 語句的結果集,不去除重複結果;

except:查詢包含在a語句的結果集中但不包含在b語句的結果集中的結果;

語法:

限制條件

(1)所有查詢中的列數和列的順序必須相同。

(2)比較的兩個查詢結果集中的列資料型別可以不同但必須相容。

(3)比較的兩個查詢結果集中不能包含不可比較的資料型別(xml、text、ntext、image 或非二進位制 clr 使用者定義型別)的列。

(4)返回的結果集的列名與運算元左側的查詢返回的列名相同。order by 子句中的列名或別名必須引用左側查詢返回的列名。

(5)不能與 compute 和 compute by 子句一起使用。

(6)通過比較行來確定非重複值時,兩個 null 值被視為相等。(except 或 intersect 返回的結果集中的任何列的為空性與運算元左側的查詢返回的對應列的為空性相同。)

與表示式中的其他運算子一起使用時的執行順序

1、括號中的表示式

2、intersect 運算元

3、基於在表示式中的位置從左到右求值的 except 和 union

如果 except 或 intersect 用於比較兩個以上的查詢集,則資料型別轉換是通過一次比較兩個查詢來確定的,並遵循前面提到的表示式求值規則。

舉例:tablea tableb

null null

null 2

1 31 4

2 53 5

4 5

a:(select * from tablea) except (select * from tableb)

結果: 1

(1 row(s) affected)

b: select * from tablea intersect select * from tableb

結果:234

5(4 row(s) affected)

SQL關聯查詢

一 關聯基礎 連線查詢 查詢兩個或兩個以上資料表或檢視的查詢,通常建立在存在相互關係的父子表之間。關聯查詢 查詢的結果集中的字段可能來自多張表。要從多張表中獲取資料時,就要找到這幾張表記錄的對應關係,然後建立聯絡後分別獲取。所以連線條件 指明表之間記錄的對應關係 在關聯查詢中十分關鍵。n 張表關聯查...

sql關聯查詢

1.內連線 是最普遍的一種連線方式,選出相連的兩張表都互相滿足連線條件的資料。寫法 select ainner joinb on a.id b.aid 其中inner可忽略 舉例 a表 查詢語句 select from a inner join b on a.id b.id。將a表的每一條資料拿出來...

SQL關聯查詢

select from a,b c 或者 select from a cross join b cross join c 注 沒有任何關聯條件,結果是 笛卡爾積,結果集 會很大,沒有意義,很少使用。select from a,b where a.id b.id 或者 select from a in...