更新时间:2024-09-27 GMT+08:00

集合操作

Union/Union ALL/Intersect/Except

语法格式

1
query UNION [ ALL ] | Intersect | Except query

语法说明

  • UNION返回多个查询结果的并集。
  • Intersect返回多个查询结果的交集。
  • Except返回多个查询结果的差集。

注意事项

  • 集合运算是以一定条件将表首尾相接,所以其中每一个SELECT语句返回的列数必须相同,列的类型一定要相同,列名不一定要相同。
  • UNION默认是去重的,UNION ALL是不去重的。

示例

输出Orders1和Orders2的并集,不包含重复记录。

1
2
insert into temp SELECT  * FROM Orders1
  UNION SELECT  * FROM Orders2;

IN

语法格式

1
2
3
SELECT [ ALL | DISTINCT ]   { * | projectItem [, projectItem ]* }
  FROM tableExpression
  WHERE column_name IN (value (, value)* ) | query

语法说明

IN操作符允许在where子句中规定多个值。如果表达式在给定的表子查询中存在,则返回 true 。

注意事项

子查询表必须由单个列构成,且该列的数据类型需与表达式保持一致。

示例

输出Orders中NewProducts中product的user和amount信息。

1
2
3
4
5
insert into temp SELECT user, amount
FROM Orders
WHERE product IN (
    SELECT product FROM NewProducts
);