代码之家  ›  专栏  ›  技术社区  ›  Jamol

从(选择1)中选择ABC作为ABC“生产”(1)而不是“1”

  •  1
  • Jamol  · 技术社区  · 17 年前

    在Postgre,为什么

    select abc from (select 1) as abc
    

    生产:

    (1)
    

    和

    select * from (select 1) as abc
    

    生产:

    1
    

    我真的很奇怪。MySQL、Oracle等是否就是这样? 我花了好几个小时才弄明白为什么我的病情不好…

    1 回复  |  直到 17 年前
        1
  •  4
  •   Quassnoi    17 年前

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

    MySQL 而其他的则缺少这一特性。

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

    SELECT abc FROM (SELECT 1, 2) abc
    

    将生产 (1, 2) ,它也是单列,具有类型 行 .

    选择 国际的 使用价值:

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