语境
在使用子查询创建PostgreSQL表时,我遇到了一个非常小的问题,我想用类型的值初始化一个字段(如果我不指定类型,它们默认为)。SELECTNULLINTEGERTEXT
说得够多了,下面是一段带有背景解释的代码:
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::INTEGERINTEGER NULL AS fidNULL INTEGER AS fid
环境
PostgreSQL 10.12
