问题描述: 今天是新系统上线之后第一次跑数据,需要和老系统跑出来的表做对比。完全一样则项目运行ok,新系统在时间上减少了人工干预,提高了80个百分点。先用老系统跑一次数据,导入到一个备份表。再用新系统跑一次,数量和备份表里面的一样。心里坦荡了一
问题描述:
今天是新系统上线之后第一次跑数据,需要和老系统跑出来的表做对比。完全一样则项目运行ok,新系统在时间上减少了人工干预,提高了80个百分点。先用老系统跑一次数据,导入到一个备份表。再用新系统跑一次,数量和备份表里面的一样。心里坦荡了一点。再比较里面每一行数据是否一样的时候,先是用了如下方式:
SELECT
COUNT(0)
FROM
(
SELECT * FROM table_nm_bac
UNION
SELECT * FROM table_nm
) A
表table_nm_bac和表table_nm里面的数据都是1万条,结果上述query出来的结果是9千条。
环境:SQL SERVER 2008
解决方法:
因为想到不可能union出来的结果比每个表数量少,所以立马用EXCEPT的如下方式:
SELECT
COLUMN_NM1,
COLUMN_NM2
...
说明:我不知道这个系统还能用到什么地方!他的运作方式是这样的,客户在其他地方比如掏宝购买了 你得卡,然后在你的网站进行冲值,你得有人登陆并看着后台,如果有人冲值,就会刷出记录,手工冲值完毕后,你得点击 [冲值完毕],客户的页面 就会返回 冲值信息!安装:上传所有文件,倒入(sql.txt)mysql数据库,使用myphpadminphplib 777phplib/sys.php 777phplib
0
FROM
table_nm
EXCEPT
SELECT
COLUMN_NM1,
COLUMN_NM2
...
FROM
table_nm_bac
GOSELECT
COLUMN_NM1,
COLUMN_NM2
...
FROM
table_nm_bac
EXCEPT
SELECT
COLUMN_NM1,
COLUMN_NM2
...
FROM
table_nm
GO
这样两个query出来的结果都是空的。我就放心了。后来用下面的query再检查了一遍数据,结论出来了,是因为union把表里面自己的重复数据给除掉了:SELECT COUNT(0) FROM(
SELECT DISTINCT * FROM table_nm) A
GO
SELECT
COUNT(0)
FROM
(
SELECT * FROM table_nm
UNION
SELECT * FROM table_nm
)
GO
DISTINCT后的数据和UNION自己后的数据是一样一样的。
结论:比对两个表数据是否一致还是用EXCEPT方式比较好, 因为两个做union会把自己表里面的重复数据也除掉。
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号