如何实现可处理含计算条件查询的ClickHouse视图或表?
实现方案
要让ClickHouse处理指定查询并返回目标结果,有两种简单直接的方式:
方式一:创建普通视图
创建包含目标数据的视图,把e字段值设为5(对应查询条件e=4+1的计算结果),确保WHERE条件能精准匹配:
CREATE VIEW sometable AS SELECT 1 AS a, 2 AS b, 'whatever' AS c, 5 AS d, 5 AS e
执行查询时,会自动过滤出匹配条件的行。如果只需要返回a、b、c、d列,可调整查询语句:
select a, b, c, d from sometable where a=1 and b=2 and c='whatever' and e=4+1
方式二:创建内存表并插入数据
如果需要后续灵活修改数据,可创建内存表并插入目标行:
CREATE TABLE sometable ( a Int32, b Int32, c String, d Int32, e Int32 ) ENGINE = Memory; INSERT INTO sometable VALUES (1, 2, 'whatever', 5, 5);
直接执行原查询语句就能返回预期结果:
select * from sometable where a=1 and b=2 and c='whatever' and e=4+1
说明
- 查询条件里的
e=4+1等价于e=5,所以表/视图必须包含e字段且值为5,否则会因字段不存在报错。 - 若不需要返回
e字段,在SELECT语句中明确指定a、b、c、d即可。
内容的提问来源于stack exchange,提问作者kEvin
相关产品推荐
相关产品推荐

