搜網(wǎng)站網(wǎng)滄州網(wǎng)站優(yōu)化
在Hive中,union和union all都是對兩個(gè)以及多個(gè)子查詢的結(jié)果合并,不過他們有什么區(qū)別呢,union會對子查詢的結(jié)果去重合并,而union all不會對子查詢結(jié)果去重處理。下面讓我們一起看看吧。
一、union
1. union 語法
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
2. 數(shù)據(jù)準(zhǔn)備
informations信息表中的數(shù)據(jù)如下:
hive> SELECT * FROM informations;
+-----+--------------+-------------------+-----------+
| id | name | phone | country |
+-----+--------------+-------------------+------- ---+
| 1 | zhangsan | 17426323494 | CN |
| 2 | lisi | 13026468221 | CN |
| 3 | wangwu | 13323447234 | USA |
| 4 | zhaoliu | 18626525707 | CN |
| 5 | xiaoming | 15020472984 | USA |
| 7 | wanghao | 13012396032 | IND |
+-----+--------------+-------------------+-----------+
apps表中的數(shù)據(jù)如下:
hive> SELECT * FROM apps;
+------+------------+-------------------------+---------+
| id | app_name | url | country |
+------+------------+-------------------------+---------+
| 1 | QQ APP | http://im.qq.com/ | CN |
| 2 | 微博 APP | http://weibo.com/ | CN |
| 3 | 淘寶 APP | https://www.taobao.com/ | CN |
+------+------------+-------------------------+---------+
3. 測試結(jié)果
執(zhí)行以下SQL輸出結(jié)果如下:
hive> SELECT country FROM informations
UNION
SELECT country FROM apps
ORDER BY country;
+---------+
| country |
+---------+
| CN |
| CN |
| CN |
+---------+
小結(jié):union會對子查詢的結(jié)果去重合并。
?
二、union all
1. union all 語法
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;
注意:union結(jié)果集中的列名總是等于union中第一個(gè)select語句中的列名。
2. 數(shù)據(jù)準(zhǔn)備
informations信息表中的數(shù)據(jù)如下:
hive> SELECT * FROM informations;
+-----+--------------+-------------------+-----------+
| id | name | phone | country |
+-----+--------------+-------------------+------- ---+
| 1 | zhangsan | 17426323494 | CN |
| 2 | lisi | 13026468221 | CN |
| 3 | wangwu | 13323447234 | USA |
| 4 | zhaoliu | 18626525707 | CN |
| 5 | xiaoming | 15020472984 | USA |
| 7 | wanghao | 13012396032 | IND |
+-----+--------------+-------------------+-----------+
apps表中的數(shù)據(jù)如下:
hive> SELECT * FROM apps;
+------+------------+-------------------------+---------+
| id | app_name | url | country |
+------+------------+-------------------------+---------+
| 1 | QQ APP | http://im.qq.com/ | CN |
| 2 | 微博 APP | http://weibo.com/ | CN |
| 3 | 淘寶 APP | https://www.taobao.com/ | CN |
+------+------------+-------------------------+---------+
3. 測試結(jié)果
執(zhí)行以下SQL輸出結(jié)果如下:
hive> SELECT country FROM informations
UNION ALL
SELECT country FROM apps
ORDER BY country;
+---------+
| country |
+---------+
| CN |
| CN |
| CN |
| CN |
| CN |
| CN |
| USA |
| USA |
| IND |
+---------+
小結(jié):union all不會對子查詢結(jié)果去重處理。
三、總結(jié)
union和union all操作符用于合并兩個(gè)或多個(gè)select語句的結(jié)果集。但union去重合并,而union all不去重處理。注意:union內(nèi)部的每個(gè)select語句必須擁有相同數(shù)量的列。列也必須擁有相似的數(shù)據(jù)類型。同時(shí)每個(gè)select語句中的列的順序必須相同。