zoukankan      html  css  js  c++  java
  • Hive-表连接

    Hive只支持等值连接,即ON子句中使用等号连接,不支持非等值连接。

    Hive内置的数据存储类型,TextFile, SequenceFile, ORC(列式存储)

    如果连接语句中有WHERE子句,会先执行JOIN子句,再执行WHERE子句。[吴超1] 

    假设有以下测试数据

    表user数据如下

    User_id

    name

    1

    张三

    2

    李四

    3

    王五

     表job数据如下

    Job_id

    job

    user_id

    1

    工程师

    1

    2

    美工

    2

    3

    美工

    4

    建表语句如下

    CREATE TABLE IF NOT EXISTS user(id int, name string) ROW FORMATDELIMITED FIELDS TERMINATED BY ‘ ’;

    CREATE TABLE IF NOT EXISTS job(id int, job string, user_id int) ROWFORMAT DELIMITED FIELDS TERMINATED BY ‘ ’;

    10.1.1.    内连接

    内连接指的是把符合两边连接条件的数据查询出来。

    执行以下语句

    select * from user join job on user.id=job.user_id;

    结果如下

    10.1.2.    左外连接

    左外连接:左边有,右边如果没有数据,那么为空。

    执行以下语句

        select * from user left outer join job on user.id=job.user_id;

    不能使用let join,只能使用left outerjoin。结果如下

     

    10.1.3.    右外连接

    执行以下语句

    select * from user right outer join job on user.id=job.user_id;

    结果如下

    10.1.4.    全外连接

    执行以下语句

    select * from user full outer join job on user.id=job.user_id;

    结果如下

       

    10.1.5.    左半连接

    执行以下语句,左半连接用来代替in操作或者exists操作的

    select * from user left semi join job on user.id=job.user_id;

    结果如下

    该语句相当于如下语句

    select * from user where id in (select user_id from job);

    但是,hive不支持in子句。所以只能变通,使用left semi子句。

    参考链接:http://blog.csdn.net/woshisap/article/details/43422423

  • 相关阅读:
    【Java】增强的for流程
    xxxxx
    lyphtesttest rename of file
    lyphtesttest winmerge class の比較
    lyphtesttest sql of system session
    lyphtesttest 常用ファイルの操作、検索。excelの操作  java
    Maven3(2.集成maven插件到eclipse(包含eclipse安装svn步骤))
    Maven3(1.下载maven安装与配置)
    centos6 安装hbase+hadoop单机版
    centos6 安装jdk1.6
  • 原文地址:https://www.cnblogs.com/xiohao/p/6421306.html
Copyright © 2011-2022 走看看