//--一句话 去同存异,留第一个sql里面的结果。
//创建表1
create table test1
(
name varchar(10),
sex varchar(10),
age int
);
insert into test1 values('luxin','female',25);
insert into test1 values('tom','female',26);
insert into test1 values('mary1','male',27);
insert into test1 values('money','male',27);
insert into test1 values('tony','male',28);
insert into test1 values('tony1','male',19);
//创建表2
create table test2
(
name varchar(10),
sex varchar(10),
age int
);
insert into test2 values('luxin','female',25);
insert into test2 values('tom','female',26);
insert into test2 values('mary2','male',27);
insert into test2 values('money','male',27);
insert into test2 values('tony','male',28);
insert into test2 values('tony2','male',19);
-------------------------------------------
select * from test1 minus select * from test2;
结果:
NAME SEX AGE
---------- ---------- ----------
mary1 male 27
tony1 male 19
-----------------------------------------------------------
select * from test2 minus select * from test1;
结果:
NAME SEX AGE
---------- ---------- ----------
mary2 male 27
tony2 male 19
结论:Minus返回的总是左边表中的数据,它返回的是差集。
用表1-表2中的数据,如果相同,则去掉,否则返回表1中的数据。
==========================================================
今天在看数据集合时偶然看到了SQL 有MINUS,可以达到相同的目的
具体如下:
SQL中的MINUS关键字
SQL中有一个MINUS关键字,它运用在两个SQL语句上,它先找出第一条SQL语句所产生的结果,然后看这些结果有没有在第二个SQL语句的结果中。如果有的话,那这一笔记录就被去除,而不会在最后的结果中出现。如果第二个SQL语句所产生的结果并没有存在于第一个SQL语句所产生的结果内,那这笔资料就被抛弃,其语法如下:
[SQL Segment 1]
MINUS
[SQL Segment 2]
其实简单的一句话就是找出第一条SQL查询的不在第二条SQL语句查询结果中的那些记录,并且要注意最后返回的结果集中,不同的记录只会被列出一次!
下面是我做的实验,很明显能够看出MINUS的效率,made_order共23万笔记录,charge_detail共17万笔记录
性能比较:
SELECT order_id FROM made_order
MINUS
SELECT order_id FROM charge_detail
1.14 sec
SELECT a.order_id FROM made_order a
WHERE NOT exists (
SELECT 1
FROM charge_detail
WHERE order_id = a.order_id
)
18.19 sec
SELECT order_id FROM made_order
WHERE order_id NOT in (
SELECT order_id
FROM charge_detail
)
20.05 sec
还有其它一下关键字:
INTERSECT (交集)
UNION ALL 并集
//创建表1
create table test1
(
name varchar(10),
sex varchar(10),
age int
);
insert into test1 values('luxin','female',25);
insert into test1 values('tom','female',26);
insert into test1 values('mary1','male',27);
insert into test1 values('money','male',27);
insert into test1 values('tony','male',28);
insert into test1 values('tony1','male',19);
//创建表2
create table test2
(
name varchar(10),
sex varchar(10),
age int
);
insert into test2 values('luxin','female',25);
insert into test2 values('tom','female',26);
insert into test2 values('mary2','male',27);
insert into test2 values('money','male',27);
insert into test2 values('tony','male',28);
insert into test2 values('tony2','male',19);
-------------------------------------------
select * from test1 minus select * from test2;
结果:
NAME SEX AGE
---------- ---------- ----------
mary1 male 27
tony1 male 19
-----------------------------------------------------------
select * from test2 minus select * from test1;
结果:
NAME SEX AGE
---------- ---------- ----------
mary2 male 27
tony2 male 19
结论:Minus返回的总是左边表中的数据,它返回的是差集。
用表1-表2中的数据,如果相同,则去掉,否则返回表1中的数据。
==========================================================
今天在看数据集合时偶然看到了SQL 有MINUS,可以达到相同的目的
具体如下:
SQL中的MINUS关键字
SQL中有一个MINUS关键字,它运用在两个SQL语句上,它先找出第一条SQL语句所产生的结果,然后看这些结果有没有在第二个SQL语句的结果中。如果有的话,那这一笔记录就被去除,而不会在最后的结果中出现。如果第二个SQL语句所产生的结果并没有存在于第一个SQL语句所产生的结果内,那这笔资料就被抛弃,其语法如下:
[SQL Segment 1]
MINUS
[SQL Segment 2]
其实简单的一句话就是找出第一条SQL查询的不在第二条SQL语句查询结果中的那些记录,并且要注意最后返回的结果集中,不同的记录只会被列出一次!
下面是我做的实验,很明显能够看出MINUS的效率,made_order共23万笔记录,charge_detail共17万笔记录
性能比较:
SELECT order_id FROM made_order
MINUS
SELECT order_id FROM charge_detail
1.14 sec
SELECT a.order_id FROM made_order a
WHERE NOT exists (
SELECT 1
FROM charge_detail
WHERE order_id = a.order_id
)
18.19 sec
SELECT order_id FROM made_order
WHERE order_id NOT in (
SELECT order_id
FROM charge_detail
)
20.05 sec
还有其它一下关键字:
INTERSECT (交集)
UNION ALL 并集
发表评论
-
一个故事讲清楚NIO(转载)
2015-10-22 11:32 658假设某银行只有10个职 ... -
一些数据库自定义函数
2013-10-15 21:42 919oracle 写法: --联系人列表 create or r ... -
如何远程连接db2数据库
2012-09-18 10:10 960在DB2数据库中,编目(catal ... -
[转]DB2行列转换
2012-09-13 13:15 873行转列 给出下面的数据: CREATE TABLE Sales ... -
存储过程 入门
2012-09-07 09:49 898示例说明:先创建一个临时表,并插入数据,然后查询临时表,返回游 ... -
ue使用的一些小技巧
2012-09-05 11:36 12621. UE里面替换tab键为空格 解决使用UE编辑好 ... -
ext tree 更改图标
2012-04-16 23:11 1699如果在Java代码中树的Node不设置cls的话,Extjs ... -
js六种数据类型和var
2012-04-13 14:32 1253JavaScript 有六种数据类 ... -
ExtJs 控制复选框disabled
2012-04-13 14:12 2930var csm2 = new Ext.grid.Checkbo ... -
JS 四舍五入
2012-04-10 23:36 959写法巨强的四舍五入的转换函数,如下: function ro ... -
Ext el属性
2012-04-10 23:08 883这个是你要将你的组件渲染到哪个div 比如有个<div ... -
getOutputStream() has already been called for this response
2012-04-06 17:33 983getOutputStream() has al ... -
修改TOMCAT(5.5版本前)内存的方法
2012-03-30 11:34 1106Tomcat默认可以使用的内 ... -
oracle 常用sql
2012-03-27 10:49 854--创建用户 CREATE USER &q ... -
两台windows服务器----SVN的迁移
2012-03-26 17:27 1157两台服务器,进行SVN的迁移: 系统平台:windows se ... -
hibernate 延迟加载
2012-03-23 18:06 784延迟加载机制是为了避 ... -
分享一个ldap验证链接的方法
2012-03-22 12:07 1144public String auth(String userN ... -
poi 操作excel
2012-03-19 21:52 1173本篇面向对象为Java的初 ... -
oracle 复制表
2012-03-15 11:47 11331.不同用户之间的表数 ... -
闪回 找回已删除的数据
2012-02-24 15:26 826SCN(系统改变号),它的英文全拼为:System Chang ...
相关推荐
MINUS关键字用于在两个查询结果之间找到差异,返回的结果是只存在于第一个查询中的行。需要注意的是,MINUS操作也会自动去除重复行。 最后,游标(CURSOR)是Oracle处理结果集的一种方式,主要用于存储过程和函数。...
本文介绍了三种在Oracle中对比两张表数据一致性的方法:使用11g提供的`dbms_comparison`包、利用`EXCEPT`或`MINUS`关键字以及编写自定义脚本。每种方法都有其适用场景,可以根据实际需求选择合适的方法来确保数据的...
在Java开发中,我们经常需要对数据库进行分页查询,但是Oracle数据库不支持Limit关键字,那么如何在Oracle中实现分页查询呢?下面,我们将详细介绍Oracle中SQL不能用Limit的处理方法。 一、使用RowNum实现分页查询 ...
在Oracle 11g中,SQL语句不区分大小写,尽管如此,开发者习惯上会将关键字以大写形式书写,以便于代码的阅读与理解。字符串数组在Oracle中的小标是从1开始的,这不同于某些编程语言如C或Java,它们是从0开始计数。 ...
连接两字符串可以使用||,UNION、UNION ALL、INTERSECT和MINUS则用于合并或比较多个查询的结果集。 在SQL查询中,SELECT语句是最基础的部分,用于从表中提取数据。例如,`SELECT * FROM jobs`会显示jobs表的所有列...
3. **删除用户**:如果不再需要某个用户,可以使用`DROP USER username CASCADE`删除,`CASCADE`关键字确保与用户相关的对象一并被删除。 4. **使用profile管理用户口令**:Profile是Oracle中用于控制用户资源和...
3. **集合操作符**:UNION、INTERSECT和MINUS用于合并或对比多个查询的结果集。 4. **分组和聚合函数**:GROUP BY和HAVING子句用于按一个或多个列对结果进行分组,而聚合函数如COUNT、SUM、AVG、MAX和MIN则对分组后...
3. **集合操作**:使用UNION, INTERSECT, MINUS等操作符合并多个查询结果。 4. **ORDER BY子句**:按照特定顺序排序查询结果。 5. **GROUP BY子句的增强**:结合WITH ROLLUP使用进行汇总统计。 6. **GROUPING函数**...
在Oracle SQL中,可以使用`JOIN`关键字进行多表查询,如内连接(INNER JOIN)、外连接(LEFT JOIN, RIGHT JOIN, FULL JOIN)等。 十、子查询和集合操作 子查询可以在查询中嵌套另一个查询,而集合操作如UNION、...
- Oracle和SQL Server都支持`JOIN`,但Oracle的`MINUS`和`INTERSECT`操作在SQL Server中可以用`NOT EXISTS`和`INNER JOIN`或`UNION ALL`替代。 通过了解这些差异,开发者可以在跨平台项目中更高效地编写SQL语句,...
- **数据操作**:可以使用`UNION`、`INTERSECT`、`MINUS`等关键字对查询结果进行合并或筛选。 ### 四、Oracle安装与配置 - **安装准备**: - 需要预留至少4.5GB的空间。 - 安装前需要检查操作系统版本是否兼容。 ...
- **集合操作**:探讨如何使用UNION、INTERSECT、MINUS等操作符处理多个查询结果集。 #### 十、数据字典 - **数据字典概念**:解释数据字典的作用及其在Oracle数据库中的重要性。 - **V$视图**:介绍如何使用V$视图...
本篇文章将探讨如何在Oracle数据库中实现类似MySQL的`LIMIT`分页功能,以及如何模拟SQL Server的分页方式,并介绍`INTERSECT`和`MINUS`这两个SQL运算符。 首先,`INTERSECT`运算符用于找出两个或多个查询结果中的...
- **集合操作符**:介绍UNION、INTERSECT、MINUS等集合操作符的使用。 - **窗口函数**:讲解OVER子句中的窗口函数,如ROW_NUMBER、RANK等。 #### 十、数据字典 - **视图**:介绍视图的概念、创建方法及其用途。 - *...
6. **SELECT高级查询**:教授多表连接查询,JOIN关键字的应用,集合操作,以及UNION, INTERSECT, MINUS等集合运算。 7. **PL/SQL编程基础**:介绍PL/SQL编程语言,用于编写存储过程、函数和触发器,实现数据库...
附录部分内容丰富、便予参照,包括Oracle命令、关键字、功能以及函数等。 目录 第1部分 关键的数据库概念 第1章 OracleDatabase11g体系结构 1.1 数据库和实例 1.2 数据库技术 1.2.1 存储数据 1.2.2 数据保护 1.2.3...
3. 集合运算符如UNION、INTERSECT和MINUS等用于实现集合运算。 4. 子查询、连接和集合的总结涉及如何根据查询需求选择合适的查询方式。 十五、排名分页问题 1. Rownum是Oracle数据库中用于表示查询结果集中行号的一...
附录部分内容丰富、便予参照,包括Oracle命令、关键字、功能以及函数等。 目录 第1部分 关键的数据库概念 第1章 OracleDatabase11g体系结构 1.1 数据库和实例 1.2 数据库技术 1.2.1 存储数据 1.2.2 数据保护 1.2.3...