交差并集
练习
1、
使用hive求出两个数据集的差集
数据:
t1表:
id name
1 zs
2 ls
t2表:
id name
1 zs
3 ww
结果如下:
id name
2 ls
3 ww
SELECT t1.id
,t1.name
FROM t1
LEFT JOIN t2
ON t1.id = t2.id
WHERE t2.id is null union
SELECT t2.id
,t2.name
FROM t2
LEFT JOIN t1 ont t1.id = t2.id
WHERE t1.id is NULL
;
2、
两个表A 和B ,均有key 和value 两个字段,写一个SQL语 句,将B表中的value值置成A表中相同key值对应的value值
数据:
A:
key vlaue
k1 123
k2 234
k3 235
B:
key value
k1 111
k2 222
k5 246
使用hive的hql实现,结果是B表数据如下:
k1 123
k2 234
k5 246
SELECT t1.key
,if(t2.key is null,t1.value,t2.value) value
FROM kv2 t1
LEFT JOIN kv1 t2
ON t1.key = t2.key
;
3、
有用户表user(uid,name)以及黑名单表Banuser(uid)
1、用left join方式写sql查出所有不在黑名单的用户信息
2、用not exists方式写sql查出所有不在黑名单的用户信息
--(1)
SELECT user.uid
,user.name
FROM USER
LEFT JOIN banuser
ON user.uid = banuser.uid
WHERE banuser.uid is NULL
;
--(2)
SELECT uid
,name
FROM user
WHERE not exists(
SELECT 1
FROM banuser
WHERE user.uid=banuser.uid)
;