ClickHouse可用参数prefer_column_name_to_alias启用或禁用在查询表达式和子句中使用原始列名而不是别名。尤其是在别名与列名相同的情况下,这一设置尤其重要。可用值如下:

  • 0:默认值,列名将被别名替换。
  • 1:列名不被别名替换。

举例如下:

-- 报错,因为此时max(number)其实为MAX(AVG(number))
SET prefer_column_name_to_alias = 0;
SELECT avg(number) AS number, max(number) FROM numbers(10);

-- 结果为4.5和9,numbers(10)结果为0到9,列名为number
SET prefer_column_name_to_alias = 1;
SELECT avg(number) AS number, max(number) FROM numbers(10);

虽然启用该设置可使 ClickHouse 中的别名语法规则与大多数其他数据库引擎更加兼容,但建议保持默认值,别名最好和列名不要重名,因为改为1后可能引发其他问题。

更多推荐