使用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. python地理处理包——Shapely介绍及用户手册

    本文主要是基于shapely官方文档翻译而成 shapely主要是在笛卡尔平面对几何对象进行操作和分析. 性能 Shapely中所有的操作都是使用GEOS库.GEOS是用C++写的,也被用在许多应用程 ...

  2. android网页打印,安卓网页打印,h5页面打印,浏览器打印,js打印工具

    Android设备打印比较麻烦,一般设备厂商都提供原生app开发的SDK,我们web开发者为难了,不会原生开发啊 给大家提供一个思路,实现web加壳,利用打印浏览器实现 简单来说就是把我们的web页面 ...

  3. JHipster生成微服务架构的应用栈(四)- 网关微服务示例

    本系列文章演示如何用JHipster生成一个微服务架构风格的应用栈. 环境需求:安装好JHipster开发环境的CentOS 7.4(参考这里) 应用栈名称:appstack 认证微服务: uaa 业 ...

  4. Ext 日期格式化

    //日期格式化 Date.prototype.Format = function (fmt) { var o = { , //月份 "d+": this.getDate(), // ...

  5. SQL Server中sys.syslogin中updatedate字段的浅析

    在系统视图sys.syslogins中,有createdate与updatedate两个字段,分别表示创建登录名与更新登录名的日期,如果你用updatedate的值来判断一个登录名的权限是否被修改过, ...

  6. aspectj 简单的模拟权限检查、事务、日志记录

    package com.ij34.service; public class Hello { public void he() { System.out.println("执行Hello的h ...

  7. web前端(10)—— 浮动,清除默认样式

    文档流 web页面和ps等设计软件有本质的区别,web 网页的制作,是个“流”,从上而下 ,像 “织毛衣”,就跟编程语言一样,都是由上而下 而设计软件 ,想往哪里画东西,就去哪里画 文档流带来的最明显 ...

  8. hive笔记:转义字符的使用

    hive中的转义符 Hadoop和Hive都是用UTF-8编码的,所以, 所有中文必须是UTF-8编码, 才能正常使用 备注:中文数据load到表里面, 如果字符集不同,很有可能全是乱码需要做转码的, ...

  9. Sublime Text 2 配置PHP调试环境(在windows环境下)

    1:PHP安装,配置环境变量 PHP安装略过- 2:下载Sublime Text 2 下载地址:http://www.sublimetext.com/2 ,选择自己合适的版本 3:点击 sublime ...

  10. 基于PHP的颜色生成器

    <?php  function randomColor()  {      $str = '#';      for($i = 0 ; $i < 6 ; $i++)     {      ...