我在以下方面遇到问题:
create table tab1 (col1 double precision, col2 double precision)
Insert into tab1
select distinct col1, null
from tab1
我无法执行此操作,因为错误列“ col2”的类型为double precision,而表达式的类型为text
但这没有错误:
Insert into tab1
select col1, null
from tab1
为什么我有一个错误但没有错误?
答案 0 :(得分:2)
DISTINCT
是作为哈希汇总或通过排序计算的,并且两个操作都需要确定第二列的类型(最初为unknown
)
因此,根据rules for determining the type of output columns,PostgreSQL将在这种情况下将NULL解析为text
。
您可以使用显式类型强制转换轻松地覆盖它。