Hive 以及mysql 中如何做except 数据操作

摘要:
当我们想知道具有相同结构的两个表之间的数据差异时,可以使用以下sql:select*fromtable1exceptselect*fromtable2。上面的语句计算表1而不是表2中的数据。然而,令人失望的是,MySQL和hive中没有这样的功能。那么我们如何实现类似的功能呢?





在db2 和 oracle 中 ,当我们想知道两张结构相同的table 中,数据差异时候可以采用如下sql :

select * from table1
except
select * from table2
上面语句 求出来的就是 数据在table1 而不再table2 中的数据 ,

但是令人失望的是mysql 和hive 中竟然没有提供这样子的函数

那么有什么方法可以实现类似的功能呢?

select * from (

select  count(*) as cnt  ,all columns
(
select distinct * from table1     ------加入distinct 是防止数据在同一表里面有重复数据,造成查询结果不准确
union all  
select distinct * from table2
)
group by all columns
) where cnt =1

解析 ,

把两个表的数据union 起来 ,通过所有的字段分组 ,求出 分组后 cnt  是 一 的 ,那么就可以
推断出 这条数据 在额外一个表要么不存在,要么有些字段不同


根据在hive 和 db2中的 结果比对 ,发现结果是一致的 ,这样就不用写process 把数据在 load 到 db2 ,麻烦了 。


免责声明:文章转载自《Hive 以及mysql 中如何做except 数据操作》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇shell脚本入门基础-1php session跨页面传递 session值丢失问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

基于Centos7.6上Ambari2.7.4+HDP3.1.4离线安装

概述 Ambari:基于Web的工具,支持Apache Hadoop集群的创建 、管理和监控。可以从apache官网下载源码,自己定义开发自己需要的样式。这里先设下一个伏笔,有兴趣的可以跟着我的博客。后面会有apache-ambari二次开发。HDP:包含了hadoop生态系统的所有软件项目,比如HBase,Zookeeper,Hive,Pig等等。HDP...

MongoDB超级简明入门教程

1.概念篇 MongoDB和MySQL分别作为非关系型数据库和关系型数据库的代表,通过它们之间的对比可以很快的建立起对MongoDB的认知。 MongoDB MySQL 数据库(Database) 数据库(Database) 集合(Collection) 表(Table) 文档(Document) 记录(record) 对于关系型数...

redis在linux上部署,Redis服务器搭建/配置/及Jedis客户端的使用方法(java语言)

转自http://my.oschina.net/gccr/blog/307725?fromerr=yX8AifBq   Redis服务器搭建 安装 在命令行执行下面的命令: $ wget http://download.redis.io/releases/redis-2.8.13.tar.gz $ tar xzf redis-2.8.13.tar.g...

WebAPI安全与认证授权 学习笔记

一,两种类型的防护方式: 1.REST(表述性状态传递) API 安全防护:   REST API 使用 HTTP 并且支持传输层安全性(TLS)加密(HTTPS)。TLS 是确保互联网连接私密性的一个标准,可以检查两个系统(服务器与服务器或服务器与客户端)之间发送的数据是否受到加密且未被篡改。 2.SOAP(简单对象访问协议) API 安全防护:   也...

django 数据库迁移

一,简单的数据导出与导入(简单的迁移) 1. django 项目提供了一个导出的方法 python manage.py dumpdata, 不指定 appname 时默认为导出所有的app 1 python manage.py dumpdata [appname] > appname_data.json 比如我们有一个项目叫 mysite, 里...

oracle 更新视图

Update (Select a.empno, a.comm, b.dname           From scott.emp a, scott.dept b          Where a.deptno = b.deptno            And b.loc In ('NEW YORK', 'DALLAS'))   Set comm = 0....