select * from CYX_A s where s.A_ID not in (select A_ID from CYX_A t where t.version_dt='20170207') and s.version_dt='20170208'
帮忙把这个语句改为
select a.* from A a left outer join B b on a.uid=b.uid and a.goods=b.goods where b.uid is null and b.goods is null;
这种格式的
select * from CYX_A a
left join (select A_ID from CYX_A t where t.version_dt='20170207')b on a.A_ID=b.A_ID
where a.version_dt='20170208' and b.A_ID is null
后面多了一列null
@Yuxiang_Chen: 嗯哼,这样的写法不对,not in 也就是 t.version_dt 不在 '20170207' 范围内的
select A_ID from CYX_A t where t.version_dt='20170207'这样left join 显然是不对的
@代码飞了: not in是排除A_ID的
select s.*
from CYX_A s
left outer join CYX_A t on s.A_ID = t.A_ID
where s.version_dt = '20170208'
and t.version_dt != '20170207' ;
你这是谁教的?
@Yuxiang_Chen: 嗯哼,咋啦
@代码飞了: 表里面有很多分区,需要查询08分区里面与07不重复的数据
@Yuxiang_Chen: 我只是根据你问题来的,将SQL转化而已,其他补充的没说,怪我咯
@代码飞了: 怪我没说清楚 哈哈哈
你这写的也太绕了,数据表CYX_A 中的version_dt列如果等于20170207那么就一定不等于20170208。这两个条件是互斥的。所以,以上sql语句可以写成select * from CYX_A s where version_dt != '20170207'。这样就简单明了多了
hive分区表
表里面有很多分区,需要查询08分区里面与07不重复的数据