如果没有具有该名称的列,当我尝试通过tablename进行排序时,为什么postgresql不会抱怨?

问题描述 投票:3回答:1

如果我有一张桌子:

CREATE TABLE
    abc
    (
        xyz INTEGER,
        abc INTEGER
    );

我这样做:

select * from abc order by abc;

它可以通过名为abc的列进行排序和排序。

但是,如果我没有名为'abc'的列:

CREATE TABLE
    abc
    (
        xyz INTEGER,
        abcxyz INTEGER
    );

但我运行相同的查询:

select * from abc order by abc;

postgres没有返回错误消息。

我只是想知道为什么postgres不会返回错误消息,因为很明显,'abc'不是一个有效的列,所以我不能按该列排序。

我正在使用PostgreSQL 9.6.7

postgresql
1个回答
0
投票

Postgresql在创建表时创建一个带结构的默认TYPE。因此,当我们在查询中使用它时,它将作为TYPE返回,为了验证这一点,

在表中插入一行并运行它

select pg_typeof(abc) from abc;

它给出了结果。

pg_typeof
abc
© www.soinside.com 2019 - 2024. All rights reserved.