sql—在配置单元中查询多个值,每个值都有自己的时间跨度

ef1yzkbh  于 2021-06-24  发布在  Hive
关注(0)|答案(1)|浏览(363)

我想从一个表中选择所有符合可能值列表的设备。我可以这样使用rlike:

select * from table where device_id RLIKE 'xx200|xx202|xx403|xx770|xx309|xx931|'

但是我还要选择一个时间范围,每个设备的时间范围是不同的。
如何在单个查询中实现这一点?
如果我这样做了:

select * from table WHERE timestamp >= '2010-09-01' AND timestamp <= '2013-08-31' AND where device_id RLIKE 'xx200|xx202|xx403|xx770|xx309|xx931|'

…显然这行不通,因为我只提供单一范围的时间戳。

tcbh2hod

tcbh2hod1#

然后您必须中断regexp,并显式地枚举range/string条件对,如下所示:

SELECT *
FROM mytable
WHERE 
    (
        timestamp >= '2010-09-01' AND timestamp <= '2013-08-31' -- first range
        AND device_id LIKE '%xx200%'                            -- first string
    ) OR (
        timestamp >= '2010-10-01' AND timestamp <= '2013-09-31' -- second range
        AND device_id LIKE '%x403%'                             -- second string
    ) OR ...

相关问题