2024年3月20日发(作者:)

SQL集合运算 差集 并集 交集

SQL-3标准中提供了三种对检索结果进行集合运算的命令:并集UNION;交集

INTERSECT;差集EXCEPT(在Oracle中叫做 MINUS)。在有些数据库中对此的支持不

够充分,如MySql中只有UNION,没有其他两种。实际上这些运算都可以通过普通的

SQL来实现,虽然有时有些繁琐。

假设有两个表(或视图)s,t,s中有两个字段sa,sb;t中有两个字段ta,tb;

差集EXCEPT:

PLAIN TEXT

SQL:

1. SELECTsaFROMs

2. EXCEPT

3. SELECTtaFROMt;

可以写作

PLAIN TEXT

SQL:

1. SELECTsaFROMs

2. WHEREsaNOTIN

3. (SELECTtaFROMt)

上面的例子中忽略了对s和t单独的条件,这些总可以加入AND条件完成,或者使用

视图。如果是多个字段比较麻烦,如:

PLAIN TEXT

SQL:

1. SELECTsa, sbFROMs

2. EXCEPT

3. SELECTta, tbFROMt;

需要写成

PLAIN TEXT

SQL:

1. SELECTsa, sbFROMs