两张结构一样的表如何找不同的记录:UNION - UNION ALL - INTERSECT - MINUS / EXCEPT
来源:互联网 发布:和明星合影软件 编辑:程序博客网 时间:2024/04/30 23:32
这里的SQL,使用以下的测试表,与测试数据
CREATE TABLE union_tab_1 ( id INT, val VARCHAR(10));
CREATE TABLE union_tab_2 ( id INT, val VARCHAR(10));
INSERT INTO union_tab_1 VALUES(1, 'A');INSERT INTO union_tab_1 VALUES(2, 'B');INSERT INTO union_tab_1 VALUES(3, 'C');
INSERT INTO union_tab_2 VALUES(1, 'A');INSERT INTO union_tab_2 VALUES(1, 'A');INSERT INTO union_tab_2 VALUES(2, 'B');INSERT INTO union_tab_2 VALUES(4, 'D');
UNION-合并且去除重复记录
SQL中的UNION用法
UNION 指令的目的是将两个 SQL 语句的结果合并起来。从这个角度来看, UNION 跟 JOIN 有些许类似,因为这两个指令都
可以由多个表格中撷取资料。 UNION 的一个限制是两个 SQL 语句所产生的栏位需要是同样的资料种类。另外,当我们用
UNION这个指令时,我们只会看到不同的资料值 (类似 SELECT DISTINCT)。
UNION 的语法如下:
[SQL 语句 1]
UNION
[SQL 语句 2]
此处理 Oracle / SQL Server / MySQL 都支持,因此这里只粘贴 Oracle 例子,不重复粘贴其他数据库的代码了。(下同)SQL> SELECT * FROM union_tab_1 2 UNION 3 SELECT * FROM union_tab_2;
ID VAL---------- -------------------- 1 A 2 B 3 C 4 D
UNION ALL-合并且不去除重复记录
SQL> SELECT * FROM union_tab_1 2 UNION ALL 3 SELECT * FROM union_tab_2;
ID VAL---------- -------------------- 1 A 2 B 3 C 1 A 1 A 2 B 4 D
7 rows selected.
INTERSECT - 仅仅给出2个表都有的数据(去除重复记录)
(注: 此语句, Oracle 与 SQL Server 可用, 好像 MySQL 不支持。)
SQL> SELECT * FROM union_tab_1 2 INTERSECT 3 SELECT * FROM union_tab_2;
ID VAL---------- -------------------- 1 A 2 B
MINUS / EXCEPT- 返回第一个表中有、第二个表中没有的数据
Oracle
MINUS 指令是运用在两个 SQL 语句上。它先找出第一个 SQL 语句所产生的结果,然后看这些结果有没有在第二个 SQL 语句的
结果中。如果有的话,那这一笔资料就被去除,而不会在最后的结果中出现。如果第二个 SQL 语句所产生的结果并没有存在于第
一个 SQL 语句所产生的结果内,那这笔资料就被抛弃。
MINUS 的语法如下:
[SQL 语句 1]
MINUS
[SQL 语句 2]
SQL> SELECT * FROM union_tab_1 2 MINUS 3 SELECT * FROM union_tab_2;
ID VAL---------- -------------------- 3 C
SQL> SELECT * FROM union_tab_2 2 MINUS 3 SELECT * FROM union_tab_1;
ID VAL---------- -------------------- 4 D
SQL Server
1> SELECT * FROM union_tab_12> EXCEPT3> SELECT * FROM union_tab_2;4> goid val----------- ---------- 3 C
(1 行受影响)
1> SELECT * FROM union_tab_22> EXCEPT3> SELECT * FROM union_tab_1;4> goid val----------- ---------- 4 D
(1 行受影响)
好像 MySQL 不支持
- 两张结构一样的表如何找不同的记录:UNION - UNION ALL - INTERSECT - MINUS / EXCEPT
- 数据库的Union、Union All、Intersect、Minus
- 数据库的Union、Union All、Intersect、Minus
- Oracle的union,union all ,minus,intersect
- Intersect,Minus,Union,Union ALL 使用记录
- Oracle中的Union、Union All、Intersect、Minus的使用
- oracle 的 union union all intersect minus用法
- Oracle中union、union all、minus和intersect的区别
- Union和Union All、Intersect、Minus的区别
- SQL里的Union/Union all/Intersect/Minus
- Intersect,Minus,union all 和union的区别
- union、union all、 Intersect、minus的用法讲解
- SQL中浅谈union、union all、Intersect、Minus的区别
- Union, Union all, intersect, minus
- union、union all、intersect、minus
- Union、Union All、Intersect、Minus
- UNION ,UNION ALL ,INTERSECT ,MINUS
- SQL语句的MINUS,INTERSECT和UNION ALL
- Java 排序问题
- 我们该如何设计数据库(二)
- php文件怎么打开你知道吗?
- jquery常见问题总结
- 真机测试及布署Code Sign error问题总结
- 两张结构一样的表如何找不同的记录:UNION - UNION ALL - INTERSECT - MINUS / EXCEPT
- Android客户端和服务器交互
- 黑马程序员—Java 反射
- 动态规划——最大值
- andoid的智能指针
- Java 查找方法(普通查找,二分查找)
- 我们该如何设计数据库(三)
- 服务员-dp
- 如何避免扩展同名函数或宏