为何在PostgreSQL中查询表名作为列名可正常执行?
问题解答
执行的两个查询
第一个查询
select badges from badges; badges ----------------------------------- (1,BadgeNameHere,1) (2,Figher,1) (2 rows)
第二个查询
select * from badges; id | name | person_id ----+---------------+--------------- 1 | BadgeNameHere | 1 2 | Figher | 1 (2 rows)
问题解答
这是PostgreSQL的专属特性,不属于SQL标准范畴。
在PostgreSQL里,每个表都会隐式对应一个行类型(复合类型),当你在SELECT子句中直接引用表名时,PostgreSQL会将整行数据打包成对应的行类型元组返回,这就是你看到的结果。
你可以在PostgreSQL官方文档的「复合类型」章节查阅相关细节,里面会详细讲解行类型的定义、引用方式以及相关用法。
内容的提问来源于stack exchange,提问作者Finlay Weber
相关产品推荐
相关产品推荐

