您的位置:首页 > 数据库

SQL查询:并集、差集、交集

2018-03-07 22:42 211 查看
  新建两个表进行测试:

test_a

IDname
1曹操
2郭嘉
3孙权
4周瑜
test_b

IDname
1刘备
2关羽
3张飞
4孙权
5周瑜

1.UNION形成并集

  UNION可以对两个或多个结果集进行连接,形成“并集”。

  子结果集所有的记录组合在一起形成新的结果集。

1、限定条件

  要是用UNION来连接结果集,有4个限定条件。

  (1)、子结果集要具有相同的结构。

  (2)、字结果集的列数必须相同。

  (3)、子结果集对应的数据类型必须可以兼容。

  (4)、每个子结果集不能包含order by和compute子句。

2、语法形式

SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;


3.示例:

  无重复记录:



  有重复记录:



2.EXCEPT形成差集

  EXCEPT可以对两个或多个结果集进行连接,形成“差集”。

  返回左边结果集合中已经有的记录,而右边结果集中没有的记录。

1、限定条件

  要是用EXCEPT来连接结果集,有4个限定条件。

  (1)、子结果集要具有相同的结构。

  (2)、字结果集的列数必须相同。

  (3)、子结果集对应的数据类型必须可以兼容。

  (4)、每个子结果集不能包含order by和compute子句。

2、语法形式

SELECT column_name(s) FROM table1
EXCEPT
SELECT column_name(s) FROM table2;


  博主的MySQL版本不支持EXCEPT,暂用NOT IN展示结果。



3.INNER JOIN形成交集

  INNER JOIN可以对两个或多个结果集进行连接,形成“交集”。

  返回左边结果集和右边结果集中都有的记录。

1、限定条件

  要是用INNER JOIN来连接结果集,有4个限定条件。

  (1)、子结果集要具有相同的结构。

  (2)、字结果集的列数必须相同。

  (3)、子结果集对应的数据类型必须可以兼容。

  (4)、每个子结果集不能包含order by和compute子句。

2、语法形式

SELECT column_name(s) FROM table1
INNER JOIN table2
ON table2.column_name(s) = table1.column_name(s);




SELECT column_name(s) FROM table1
JOIN table2
ON table2.column_name(s) = table1.column_name(s);


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 SQL MySQL