T SQL查詢高階 資料集之間的運算

2021-09-22 11:16:22 字數 1591 閱讀 2290

概述

關聯式資料庫的起源起源於數學中的集合概念.所以集合與集合之間,也同樣繼承了數學集合之間的運算.而對於在關聯式資料庫中,常常用於兩個資料集中並沒有直接的關聯式資料庫中的「關係」,比如外來鍵.但兩個資料集會有間接的關係,比如兩屆比賽,參加比賽人員集合之間會有間接關係.

資料集運算的種類

在t-sql中,關係運算實際上可以分為四類,首先看我們舉例子用的表:

這裡的例子表分別為兩個不同會議參加的人員記錄,分別為meeting1和meeting2,如下:

1_1 1_2

關係運算的具體可以分為以下四類:

1.a∩b,既是所求資料集既在a中,又在b中

在例項表中,實際的例子為既參加第乙個會議,又參加第二個會議人的集合,如下圖: 2

2.a∪b,既所求資料在資料集a中,或在資料集b中

在例項表中,實際的例子為參加第乙個會議,或參加第二個會議人的集合,如下圖: 3

3.a-b,既所求資料在資料集a中,不在資料集b中

在例項表中,實際的例子為參加了第乙個會議,同時沒有參加第二個會議的人的集合,如下圖: 4

4.b-a,既所求資料在資料集b中,不在資料集a中

這個其實和上面第三種情況沒有本質區別,只是順序顛倒了一下,如下圖: 5

資料集的**

在t-sql中,參與資料集運算的兩個資料集可以來自任何返回資料集的表示式.比如,一張表,一張表的子集,多張表,臨時表變數,虛擬列,甚至是乙個scalar值

資料集運算的條件

並不是所有的資料集都可以做運算。就像乙個蘋果+乙個鴨梨不能等於2一樣,在t-sql中,資料集之間的運算需要符合下面3個條件:

1.兩個資料集之間必須有相同數量的列(column)

2.兩個資料集之間列出現的次序必須一致

3.兩個資料集之間每乙個對應的列的資料型別必須匹配

資料集運算在t-sql中的實現

1.a∪b  使用union實現

t-sql中提供了union來實現a∪b的運算,實際上union有兩個版本,分別為:

union

union表示了a∪b的關係,當遇到兩個資料集中相同的行時,保留唯一乙個: 6

union all

union all同樣實現了a∪b的邏輯,但與union不同的是,當遇到兩個資料集中重複的行時,全部保留: 7

2.a∩b,使用intersect實現

t-sql提供了intersect關鍵字來實現a∩b的關係: 8

3.a-b,使用except實現

t-sql提供了except關鍵字來實現a-b的關係: 9

資料集運算的別名和排序

如果沒有為資料列指定別名,則資料列的名稱按照出現在第乙個集合對應的列名算: 10

做union後: 11

如若我們想自定義列名,則需要為資料集運算**現在第一位的資料集指定別名: 12

對運算後的結果進行排序

對運算後的結果進行排序是一件非常簡單的事情,只需要在運算的最後加上order by子句,但是這裡一定要注意:

1.order by是對整個運算後的結果排序,並不是對單個資料集

2.order by後面排序的欄位名稱是第乙個資料集的欄位名或者別名 13

總結

分類: t-sql

資料集之間的運算

關聯式資料庫的起源起源於數學中的集合概念.所以集合與集合之間,也同樣繼承了數學集合之間的運算.而對於在關聯式資料庫中,常常用於兩個資料集中並沒有直接的關聯式資料庫中的 關係 比如外來鍵.但兩個資料集會有間接的關係,比如兩屆比賽,參加比賽人員集合之間會有間接關係.在t sql中,關係運算實際上可以分為...

資料集之間的運算

關聯式資料庫的起源起源於數學中的集合概念.所以集合與集合之間,也同樣繼承了數學集合之間的運算.而對於在關聯式資料庫中,常常用於兩個資料集中並沒有直接的關聯式資料庫中的 關係 比如外來鍵.但兩個資料集會有間接的關係,比如兩屆比賽,參加比賽人員集合之間會有間接關係.在t sql中,關係運算實際上可以分為...

TSQL查詢給定記錄的相關資料

具體環境為sql 2000 在一內容表中給定一條記錄,查尋編號大於這裡記錄的的資料,具體 如下 create proc cmst queryinterrelated id int,給定的記錄的主鍵 num int 需要條數 asdeclare rnum int declare sql nvarcha...