0

我正在尝试运行此命令:

SELECT DISTINCT ON (_id) test FROM creator_map.infos;

这给了我错误:

错误:列“测试”不存在

但根据以下教程,test应该是别名

SELECT
 DISTINCT ON
 (column_1) column_1_alias,
 column_2
FROM
 tbl_name
ORDER BY
 column_1,
 column_2;

来源

如何让 distinct 成为别名?

4

1 回答 1

2

您不能给出on (...)别名,因为它不是“返回”名称的表达式。这就像试图给一个IN条件一个别名where a in (1,2,3) as foo

如有疑问,请阅读手册。它没有提到那里的别名。

只能为实际选择列表中的表达式定义别名,并且(...)不是选择列表的一部分,而是distinct on表达式的一部分。

我认为这只是该教程页面上措辞不当的问题,应该阅读:

select distinct on (column1) 
          column1 as column_1_alias,
          column2
from ....
于 2019-03-17T07:31:21.847 回答