在ClickHouse中,字段别名和WHERE条件的优先级是不同的:
- 字段别名的优先级更高。当你给一个字段起一个别名后,可以在查询中使用该别名来引用这个字段。例如:
SELECT column_name AS alias_name
FROM table_name
WHERE alias_name = 'value';
这里的alias_name是字段column_name的别名,你可以在WHERE条件中直接使用别名来筛选数据。
- WHERE条件的优先级较低。WHERE条件用于筛选数据,仅对查询结果进行过滤,不会影响字段的别名。你可以在WHERE条件中使用原始字段名来筛选数据。
由于字段别名的优先级高于WHERE条件,如果忽略这个性质,进行有别名的查询时可能会导致结果不正确。
例如
select number
from numbers(10)
where number =5;
能够得到5。这是一般情况下的正常结果。
但是,如果
select '5' as number ,count(1) as cnt
from numbers(10)
where number =5
输出为 5,10.
字段别名的优先级甚至高于group by