作者接下來將給出實驗用表以及具體的sql指令碼語句。
為進行實驗,作者在sql server資料庫下共建立了t1、t2兩張表,兩張表除主鍵id外均有個兩欄位stu_id和teacher_id。t1表id
stu_id
teacher_id
1s0001
t012
s0002
t013
s0003
t024
s0004
t025
s0005
t036
s0002
t04
t2表id
stu_id
teacher_id
1s0002
t052
s0003
t033
s0006
t024
s0007
t045
s0005
t03
/*求補(差)集demo1,乙個字段*/
select a.stu_id from t1 a
except
select a.stu_id from t2 a;
/*和上面等效,可用於mysql*/
select a.stu_id from t1 a
where a.stu_id not
in(select a.stu_id from t2 a);
/*求補(差)集demo2,多個字段求差集*/
select a.stu_id,a.teacher_id from t1 a
where a.stu_id not
in(select a.stu_id from t2 a)
and a.teacher_id not
in(select a.teacher_id from t2 a);
/*求交集demo1,多個字段求交集*/
select a.stu_id,a.teacher_id from t1 a
intersect
select a.stu_id,a.teacher_id from t2 a;
/*和上面等效,可用於mysql*/
select a.stu_id,a.teacher_id from t1 a
where a.stu_id+a.teacher_id in
(select a.stu_id+a.teacher_id from t2 a);
/*求交集demo2*/
/*下面語句把交集中重複出現的去掉*/
select a.stu_id from t1 a
intersect
select a.stu_id from t2 a;
/*下面三個語句不會把重複的去掉,可使用distinct去重*/
select a.stu_id from t1 a
where a.stu_id in
(select a.stu_id from t2 a);
select a.stu_id from t1 a,t2 b
where a.stu_id=b.stu_id;
select a.stu_id from t1 a
where
exists
(select * from t2 b where a.stu_id=b.stu_id);
/*求並集demo*/
/*不會去重*/
select a.stu_id from t1 a
union
allselect a.stu_id from t2 a;
/*去重,mysql中可以在union後加distinct*/
select a.stu_id from t1 a
union
select a.stu_id from t2 a;
mysql交並補 集合交並補運算順序是什麼
我剛剛查完集合運算順序和邏輯運算順序,按照我的理解,順便來回答一下!我的提問 集合的交並補運算子沒有優先順序順序,運算順序完全由括號決定。邏輯與或非才有優先順序順序 邏輯非 邏輯與 邏輯或。以下內容來自維基百科 交換律a交b b交a a並b b並a 結合律 a交b 交 c a 交 b交c a並b 並...
list集合的交並補計算
list是我們常用的資料結構,存放資料,如何對資料進行交並補的計算。list的底層是動態陣列,作為比較基礎和常用的資料結構,在日常的工作中我們可能將不同的資料存放到了list中,根據業務要求,對兩個集合的資料進行交集 並集 差集,然後對它們進行後續的業務處理。怎麼辦?list的集合中已為我們提供好了...
單鏈表應有之求集合的交並集
1.題目要求 以字元的形式輸入集合a,集合b,求兩個集合的交集 並集。2.題目解析 因為涉及到的資料型別是字元型,所以尤其要主要空格對輸入資料的影響。可以使用 getchar 語句來 吃掉 空格。3.交並集演算法思路 1 並集 設乙個標誌位為0 建議往下看你就會明白為什麼設定乙個標誌位flag 0 ...