使用sql语句比较excel中数据的不同

我所在的项目组是一套物流系统,负责与公司的电商系统进行对接。但是公司的电商系统的省市区的配置和物流系统的省市区的配置有差异,所以需要找到这些差异。

首先找到我们物流系统中所开站点的省份,物流没有开的站点省份,电商网站开了,不需要分别出站点的配置区别。


SELECT A.NAME 省, B.NAME 市, C.NAME 区
FROM BIS_PROVINCE A, BIS_CITY B
LEFT JOIN BIS_DISTRICT C
ON B.ID = C.CITY_ID
WHERE A.ID = B.PROVINCE_ID
AND A.NAME IN ('江苏省',
'江西省',
'安徽省',
'浙江省',
'山东省',
'河北省',
'湖北省',
'湖南省',
'陕西省',
'河南省',
'福建省',
'广东省',
'四川省',
'重庆市');

这个是物流系统所开设的站点的省份

接着创建两个临时表,分别存储物流系统的地址配置信息和电商系统的地址配置信息。

创建物流系统地址配置信息的临时表,代码如下:


CREATE TABLE WL_ZONE AS(
SELECT A.NAME 省, B.NAME 市, C.NAME 区
FROM BIS_PROVINCE A, BIS_CITY B
LEFT JOIN BIS_DISTRICT C
ON B.ID = C.CITY_ID
WHERE A.ID = B.PROVINCE_ID
AND A.NAME IN ('江苏省',
'江西省',
'安徽省',
'浙江省',
'山东省',
'河北省',
'湖北省',
'湖南省',
'陕西省',
'河南省',
'福建省',
'广东省',
'四川省',
'重庆市'));

再接着创建电商系统的地址配置信息表,同样的表结构,但是不复制信息,代码如下:


CREATE TABLE DH_ZONE AS
SELECT A.NAME 省, B.NAME 市, C.NAME 区
FROM BIS_PROVINCE A, BIS_CITY B
LEFT JOIN BIS_DISTRICT C
ON B.ID = C.CITY_ID
WHERE A.ID = B.PROVINCE_ID
AND A.NAME IN ('江苏省',
'江西省',
'安徽省',
'浙江省',
'山东省',
'河北省',
'湖北省',
'湖南省',
'陕西省',
'河南省',
'福建省',
'广东省',
'四川省',
'重庆市')
AND 1 = 0;

这个最后的1=0,作用就是值复制表的结构但是不复制表的数据。

注意:电商系统是将电商网站的地址信息导出成excel表格传给我,所以要将excel的数据保存到数据库中。

首先打开excel,在第一列的表头,右键--->插入,插入一列,然后复制所有信息,再在数据库中的临时表中DH_ZONE,粘贴,就可以将数据存储到数据库中了。

注:在excel的第一列前插入一列是关键。不然无法保存到数据库中

在进行地址信息的对比的时候有两种情况:

1.物流系统有这个地址而电商系统没有

2.电商系统有这个地址而物流系统没有

所以查找不同分这两种情况:

第一种:


SELECT WZ.省, WZ.市, WZ.区
FROM WL_ZONE WZ
WHERE NOT EXISTS (SELECT *
FROM DH_ZONE DZ
WHERE DZ.省 || '省' = WZ.省
AND DZ.市 || '市' = WZ.市
AND DZ.区 = WZ.区)
ORDER BY WZ.省;

第二种:


SELECT DZ.省, DZ.市, DZ.区
FROM DH_ZONE DZ
WHERE NOT EXISTS (SELECT *
FROM WL_ZONE WZ
WHERE DZ.省 || '省' = WZ.省
AND DZ.市 || '市' = WZ.市
AND DZ.区 = WZ.区)
ORDER BY DZ.省;

至于为什么where语句要写成


WHERE DZ.省 || '省' = WZ.省
AND DZ.市 || '市' = WZ.市
AND DZ.区 = WZ.区)

有两个原因:

1.电扇系统传给我的地址是只有省市区的名称,但是名称后缺少"省""市"

2.中国的四大直辖市,他们的省就是"北京市""重庆市""上海市""天津市"

所以要写成这样,其实这个直辖市的情况还可以用case when end语句进行判断。

使用sql语句比较excel中数据的不同的更多相关文章

  1. 如何用SQL语句查询Excel数据?

    如何用SQL语句查询Excel数据?Q:如何用SQL语句查询Excel数据? A:下列语句可在SQL SERVER中查询Excel工作表中的数据. 2007和2010版本: SELECT*FROMOp ...

  2. SQL点滴32—Excel中CONCATENATE函数生成SQL语句

    原文:SQL点滴32-Excel中CONCATENATE函数生成SQL语句 当拿到一个Excel的时候需要将这里面的数据插入到数据库里面,该怎么办,除了使用SSIS数据导入之外还可以使用Excel中的 ...

  3. 【转载】SQL语句将一个表的数据写入到另一个表中

    在日常的数据库运维过程中,有时候需要将Select查询出来的数据集写入到另一个数据表中,其中一种方式是通过存储过程循环写入数据,另一种简便的方式是直接使用Insert Into语句后面跟上Select ...

  4. 将Excel中数据导入数据库(二)

    在上篇文章中介绍到将Excel中数据导入到数据库中,但上篇文章例子只出现了nvachar类型,且数据量很小.今天碰到将Excel中数据导入数据库中的Excel有6419行,其中每行均有48个字段,有i ...

  5. Mysql中文乱码以及导出为sql语句和Excel问题解决

    Mysql中文乱码以及导出为sql语句和Excel问题解决 这几天基于Heritrix写了一个爬虫,用到mysql,在导入导出数据时,遇到一些乱码问题,好不容易解决了,记录一下,以备查看.一.导出数据 ...

  6. 将Excel中数据导入数据库(三)

    上篇文章将Excel中数据导入数据库时,将从Excel读入的数据均转换成了数据库相应字段的类型,其实这是没有必要的,因为对于数据库各种类型的插入,均可以字符串格式插入.比如表WQ_SWMSAR_A字段 ...

  7. 一条SQL语句在MySQL中如何执行的

    本篇文章会分析一个 sql 语句在 MySQL 中的执行流程,包括 sql 的查询在 MySQL 内部会怎么流转,sql 语句的更新是怎么完成的. 在分析之前我会先带着你看看 MySQL 的基础架构, ...

  8. 一条SQL语句在MySQL中是如何执行的

    概览 本篇文章会分析下一个sql语句在mysql中的执行流程,包括sql的查询在mysql内部会怎么流转,sql语句的更新是怎么完成的. 一.mysql架构分析 mysql主要分为Server层和存储 ...

  9. 转:Oracle中SQL语句执行过程中

    Oracle中SQL语句执行过程中,Oracle内部解析原理如下: 1.当一用户第一次提交一个SQL表达式时,Oracle会将这SQL进行Hard parse,这过程有点像程序编译,检查语法.表名.字 ...

随机推荐

  1. Spring学习之旅(八)Spring 基于AspectJ注解配置的AOP编程工作原理初探

    由小编的上篇博文可以一窥基于AspectJ注解配置的AOP编程实现. 本文一下未贴出的相关代码示例请关注小编的上篇博文<Spring学习之旅(七)基于XML配置与基于AspectJ注解配置的AO ...

  2. C++代码利用pthread线程池与curl批量下载地图瓦片数据

    项目需求编写的程序,稳定性有待进一步测试. 适用场景:在网络地图上,比如天地图与谷歌地图,用户用鼠标在地图上拉一个矩形框,希望下载该矩形框内某一层级的瓦片数据,并将所有瓦片拼接成一个完整的,包含地理坐 ...

  3. 【最新】Android使用jenkins全自动构建打包-Windows版本(Android,Jenkins,360加固,Email,QRcode,参数构建,蒲公英)

    Android打包喝咖啡系列(Windows版) 这篇博客主要讲述的内容: 1.windows上部署Jenkins https://jenkins.io 2.基于SVN或Git https://git ...

  4. JS 调试中常见的报错的解决办法

    报错:Uncaught SyntaxError: Unexpected token o in JSON at position 1 at JSON.parse (<anonymous>) ...

  5. [20181007]12cR2 Using SQL Patch 2.txt

    [20181007]12cR2 Using SQL Patch 2.txt --//12cR2 已经把sql打补丁集成进入dbms_sqldiag,不是11g的 DBMS_SQLDIAG_INTERN ...

  6. SQL Server -- 回忆笔记(二):增删改查,修改表结构,约束,关键字使用,函数,多表联合查询

    SQL Server知识点回忆篇(二):增删改查,修改表结构,约束,关键字使用,函数,多表联合查询 1. insert 如果sql server设置的排序规则不是简体中文,必须在简体中文字符串前加N, ...

  7. 使用concurrent.futures模块中的线程池与进程池

    使用concurrent.futures模块中的线程池与进程池 线程池与进程池 以线程池举例,系统使用多线程方式运行时,会产生大量的线程创建与销毁,创建与销毁必定会带来一定的消耗,甚至导致系统资源的崩 ...

  8. vue 之 .sync 修饰符

    在一些情况下,我们可能会需要对一个 prop (父子组件传递数据的属性) 进行“双向绑定”. 在vue 1.x 中的 .sync 修饰符所提供的功能.当一个子组件改变了一个带 .sync 的prop的 ...

  9. June 18. 2018, Week 25th. Monday

    Health and cheerfulness naturally beget each other. 安康喜乐,相生相成. From Joseph Addison. Good health is a ...

  10. Markdown编辑器开发记录(一):开发的初衷和初期踩的坑

    先说下选择Markdown编辑器的原因,我们进行平台开发,需要很多的操作手册和API文档,要在网站中展示出来就需要是HTML格式的文件,但是由于内容很多,不可能全部由技术人员进行文档的编写,如果是只有 ...