为什么允许查询

SELECT
  'foo' "baz",
  'bar' "baz"

在博士后(9.6测试)?在什么情况下这样做有意义?乍一看,这似乎是一个伟大的虫子来源。

最佳答案

这是用户对数据如何呈现的责任。有两种典型的情况下,新手应该注意。第一个涉及匿名列,例如:

select 'alfa', 'beta'

 ?column? | ?column?
----------+----------
 alfa     | beta

第二个是连接具有相同列名的表,例如。
select *
from company c
join employee e on company_id = c.id

 id |  name   | id | name  | company_id
----+---------+----+-------+------------
  1 | Company |  1 | Smith |          1

在这两种情况下,都应该使用别名来使列名明确无误,并提供更多信息。我总是在我的问题中这样做,别人可以阅读。然而,当我临时查询一个数据库时,我有时会感谢Postgres没有太多的限制,我不必写下几个列名而不是星号。
最重要的是,Postgres会检查列名是否唯一,以防与此相关,并且从不允许数据完整性冲突,例如:
create view my_view as
select 'foo' as "baz", 'bar' as "baz"

ERROR:  column "baz" specified more than once

关于postgresql - Postgres中具有相同别名的两列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50924966/

10-09 05:29