大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
可以使用minus函数进行比较。
十余年的岳西网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网整合营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整岳西建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“岳西网站设计”,“岳西网站推广”以来,每个客户项目都认真落实执行。
在Oracle中也是用来做减法操作的,只不过它不是传统意义上对数字的减法,而是对查询结果集的减法。A minus B就意味着将结果集A去除结果集B中所包含的所有记录后的结果,即在A中存在,而在B中不存在的记录。即A minus B将只去除A跟B的交集部分,对于B中存在而A中不存在的记录不会做任何操作,也不会抛出异常。
Oracle的minus是按列进行比较的,所以A能够minus B的前提条件是结果集A和结果集B需要有相同的列数,且相同列索引的列具有相同的数据类型。此外,Oracle会对minus后的结果集进行去重,即如果A中原本多条相同的记录数在进行A minus B后将会只剩一条对应的记录。
(1)oradata:打开这个文件夹,里面是一个以数据库名(而不是实例名)命名的文件夹,我们喜欢将其命名为“orcl”。把orcl打开,看到的文件就是Oracle数据库的大部分内容了,也是DBA需要管理的东西。这些文件可以分成三类:
*.ctl:控制文件 (至少一个,一般是三个)
*.dbf:数据文件(分为系统数据文件和用户数据文件)
*.log:在线重做日志文件(至少两个,默认安装是三个,Oracle9i 下为 100M 大小)
我们在后继课程中会详细讲述这些文件的特性和用处。
如果两个数据库可以建立dblink,那么通过dblink就可以像在一个数据库一样去对比。
如果不能建立dblink,那么就只能导出两行表,通过spool导出就可以。然后通过系统级别的命令去比对。我记得linux是有比较两个文件不同行的功能的。
如果认为两个都导出比较麻烦,那就导出一个,在导入另外一个库(注意变换名字,否则表明重复就麻烦了),然后再对比。
如有两张相同表结构的表:
test表:
test1表:
现在要找出两张表有差异的数据,需要用minus及union的方式查找出来,语句如下:
select t1.* from
(select * from test
minus
select * from test1) t1
union
select t2.* from
(select * from test1
minus
select * from test) t2;
查询结果如下,红框部分的数据就是有差异的内容。
例如:核对web层和mid层保费收入的差异:
首先把这两个模块看做两张表,而且这两个模块出的字段一致,需要编号和钱,核对这个钱的数据为啥不对。
①WEB层
SELECT SUM(A.PREMIUMCNY) "保费收入(含税) "
FROM WEB_XG_SALESMAN_RISK_ALL A
WHERE TRUNC(A.STATDATE) BETWEEN DATE '2019-09-01' AND DATE '2019-09-30';
②MID层
SELECT SUM(NVL(A.PREMIUM, 0)) AS 保费收入
FROM MID_CB_PREMIUM_RISK_ALL A
WHERE TRUNC(A.STATDATE) BETWEEN DATE'2019-09-01' AND DATE'2019-09-30';
----------------------------------------------------------------------------------------
结果:(需要把两个模块的编号 和 钱 都写出来)
SQL:
SELECT A.POLICYNO, --编号
SUM(A."保费收入(含税) ") AS BFSRHS,
B.POLICYNO,
SUM(B.保费收入) AS BFSR
FROM
(SELECT A.POLICYNO,SUM(A.PREMIUMCNY) "保费收入(含税) "
FROM WEB_XG_SALESMAN_RISK_ALL A
WHERE TRUNC(A.STATDATE) BETWEEN DATE '2019-09-01' AND DATE '2019-09-30'
GROUP BY A.POLICYNO
) A
FULL JOIN
(SELECT A.POLICYNO,SUM(NVL(A.PREMIUM, 0)) AS 保费收入
FROM MID_CB_PREMIUM_RISK_ALL A
WHERE TRUNC(A.STATDATE) BETWEEN DATE'2019-09-01' AND DATE'2019-09-30'
GROUP BY A.POLICYNO
) B
ON A.POLICYNO = B.POLICYNO --用编号关联
WHERE A.POLICYNO IS NULL OR B.POLICYNO IS NULL --是否一致
OR A.BFSRHS B.BFSR
group BY A.POLICYNO,
B.POLICYNO
如有两张相同表结构的表:
test表:
test1表:
现在要找出两张表有差异的数据,需要用minus及union的方式查找出来,语句如下:
select t1.* from
(select * from test
minus
select * from test1) t1
union
select t2.* from
(select * from test1
minus
select * from test) t2;
查询结果如下,红框部分的数据就是有差异的内容。