为什么允许查询
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/