从聚合函数默认postgresql更改列名

Change column name from aggregate function default postgresql

我像这样创建了一个(大)table:

create table names_and_pics as (
    select e.emp_name, e.dept, max(p.prof_pic)
    from e.employees
    left join profiles p
      on e.emp_id = p.emp_id )

select * from names_and_pics;

emp_name | dept | max(p.prof_pic)
Dan      | IT   | 1234.img 
Phil     | HR   | 3344.img 
...

因为我忘记给第 3 个字段命名,我现在需要将它重命名为 "img_link" 我一直在尝试的语法是

alter table names_and_pics rename max(p.prof_pic) to img_link;

出现以下错误:

Syntax Error at or near "("

有什么解决办法吗?

您需要将列名放在双引号中,因为它包含无效字符:

alter table names_and_pics rename "max(p.prof_pic)" to img_link;

手册中有关引用标识符的更多信息
http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS


顺便说一句:create table ... as select 语句中 select 周围的括号是无用的噪音