hive array_contains

某个字段条件过多,查询条件失效

select * from login where dt='20130101' and (ver !='3.1' or ver !='3.2' or ver != '4.0' or ver != '5.2');
select * from login where dt='20130101' and (ver !='3.1' and ver !='3.2' and ver != '4.0' and ver != '5.2');

这个语句的目的是从一个用户登陆表中,查询20130101当天,版本不是3.1,3.2,4.0,5.2的登陆用户记录。但是,在hive0.90执行,最后返回的是20130101当天全部的登陆用户记录,后面的查询条件看起来是被忽略了。这里看起来同一个字段做这种多个!=或者=的条件查询,过多会失效。

于是修改了语句,如下:

select * from login where dt=20130101 and !array_contains(split('3.1,3.2,4.0,5.2',','),ver);

猜你喜欢

转载自blog.csdn.net/bbbeoy/article/details/83184800
今日推荐