建構 MINUS 等效式
像 Informix 這種不支援 MINUS 運算子的,建構 MINUS 等效式就很重要。
MINUS 運算子第一個運算元的運算式稱為主查詢,
第二個運算元的運算式稱為副查詢。
上式是找出不是外科部的同名同姓醫生。
如上式,select * from doctor 為主查詢,
select * from doctor where id == 3 為副查詢。
一般有兩種建構法,
第一是將副查詢的 WHERE 條件作反向式:
select * from fred
WHERE id != 3;
第二種將副查詢改成投射 rowid 的查詢,令其為 R
並對主查詢加入 rowid NOT IN 副查詢的條件式:
select * from doctor
WHERE rowid NOT IN (select rowid from fred where id = 3);
MINUS 運算子第一個運算元的運算式稱為主查詢,
第二個運算元的運算式稱為副查詢。
select first_name, second_name from doctor
MINUS
select first_name, second_name from doctor where dept = "surgery"
上式是找出不是外科部的同名同姓醫生。
如上式,select * from doctor 為主查詢,
select * from doctor where id == 3 為副查詢。
一般有兩種建構法,
第一是將副查詢的 WHERE 條件作反向式:
select * from fred
WHERE id != 3;
第二種將副查詢改成投射 rowid 的查詢,令其為 R
並對主查詢加入 rowid NOT IN 副查詢的條件式:
select * from doctor
WHERE rowid NOT IN (select rowid from fred where id = 3);
留言