“从(选择1)中选择abc为abc”生成“(1)”而不是“1”

时间:2009-04-10 13:32:08

标签: postgresql alias

在Postgre,为什么

select abc from (select 1) as abc

产生

(1)

select * from (select 1) as abc

产生

1

这对我来说真的很奇怪。那是MySQL,Oracle等的情况吗? 我花了几个小时搞清楚为什么我的条件失败了......

1 个答案:

答案 0 :(得分:4)

您的查询返回的行有不同的类型:第一个是ROW(INT),第二个是INT

MySQL和其他人缺少此功能。

在第一个查询中,您选择整个ROW作为单个列。此查询

SELECT abc FROM (SELECT 1, 2) abc

将生成(1, 2),这也是一个列,类型为ROW

要选择INT值,请使用:

SELECT  abc.col
FROM    (
        SELECT  1 AS col
        ) abc