首页 > 其他 > 详细

13.JOIN

时间:2017-02-07 22:20:30      阅读:179      评论:0      收藏:0      [点我收藏+]

SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据

CREATE TABLE IF NOT EXISTS zz0 (
number INT(11));

CREATE TABLE IF NOT EXISTS zz1 (
number INT(11));

INSERT INTO zz0 (number) VALUES(111111);
INSERT INTO zz0 (number) VALUES(222222);
INSERT INTO zz0 (number) VALUES(888888);

INSERT INTO zz1 (number) VALUES(333333);
INSERT INTO zz1 (number) VALUES(444444);
INSERT INTO zz1 (number) VALUES(555555);

hive> select * from zz0;
111111
222222
888888

hive> select * from zz1;
111111
333333
444444
888888

1.在表中存在至少一个匹配时,INNER JOIN 关键字返回行。注释:INNER JOIN 与 JOIN 是相同的。
hive> select * from zz0 join zz1 on zz0.number = zz1.number;
111111  111111
888888  888888

INNER JOIN 关键字在表中存在至少一个匹配时返回行。如果 "zz1" 中的行在 "zz0" 中没有匹配,就不会列出这些行。

 

2.LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。注释:在某些数据库中, LEFT JOIN 称为 LEFT OUTER JOIN。

hive> select * from zz0 left outer join zz1 on zz0.number = zz1.number;
111111  111111
222222  NULL
888888  888888

3.RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。注释:在某些数据库中, RIGHT JOIN 称为 RIGHT OUTER JOIN。
hive> select * from zz0 right outer join zz1 on zz0.number = zz1.number;
NULL
111111  111111
NULL    333333
NULL    444444
888888  888888

4.FULL JOIN 关键字 只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。
hive> select * from zz0 full outer join zz1 on zz0.uid = zz1.uid;
NULL
111111  111111
222222  NULL
NULL    333333
NULL    444444
888888  888888

FULL JOIN 关键字会从左表 (zz0) 和右表 (zz1) 那里返回所有的行。如果 "zz0" 中的行在表 "zz1" 中没有匹配,或者如果 "zz1" 中的行在表 "zz0" 中没有匹配,这些行同样会列出。


hive> select * from zz0 left semi join zz1 on zz0.uid = zz1.uid;
111111  111111
888888  888888

 

13.JOIN

原文:http://www.cnblogs.com/yejibigdata/p/6376070.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!