语境
在使用子查询创建PostgreSQL表时,我遇到了一个非常小的问题,我想用类型的值初始化一个字段(如果我不指定类型,它们默认为)。SELECT
NULL
INTEGER
TEXT
说得够多了,下面是一段带有背景解释的代码:
CREATE TABLE my_table AS
SELECT
0 AS fid, -- initiate new field here, it doesn't exist in the table where the select is run on
gid,
min(distance) AS mindist
FROM
schema.points
GROUP BY
gid;
这按预期工作,我现在需要创建0
的领域无处不在。fid
但我对0
值不太满意,因为它们在进一步的计算中具有重要意义,因此我想fid
用值初始化这个字段NULL
(别担心,它不是 a pkey
)。
因此,我将其更改为:
CREATE TABLE my_table AS
SELECT
NULL AS fid, -- initiate new field here, it doesn't exist in the table where the select is run on
gid,
min(distance) AS mindist
FROM
schema.points
GROUP BY
gid;
它运行良好!
除了现在该字段是一个TEXT
字段(使用时看起来它是“默认”类型NULL
),我真的需要它作为一个INTEGER
(如果我让它作为,我会遇到更多麻烦TEXT
)。
问题
我如何在这个特定查询中同时设置(即从技术上讲)fid
字段NULL
和类型?INTEGER
这些都不起作用(我每次都面临语法错误):
NULL AS fid::INTEGER
INTEGER NULL AS fid
NULL INTEGER AS fid
环境
PostgreSQL 10.12