“选择”与“来自”相同的表是什么意思?

时间:2018-07-19 00:14:46

标签: postgresql

提供表格

mytestdb=# select * from foo;
 id | name 
----+------
  4 | Tim
(1 row)

select foo from foo输出什么,即selectfrom相同的表是什么意思?谢谢。

mytestdb=# select foo from foo;
   foo   
---------
 (4,Tim)
(1 row)

谢谢。

我的问题来自了解

json_agg()的输入是什么
mytestdb=# select json_agg(foo) from foo;
        json_agg         
-------------------------
 [{"id":4,"name":"Tim"}]
(1 row)

请参见http://johnatten.com/2015/04/22/use-postgres-json-type-and-aggregate-functions-to-map-relational-data-to-json/

2 个答案:

答案 0 :(得分:4)

在表的当前行的选择列表generatescomposite value中使用表名或别名。将表名或别名传递给可以接受复合值的函数将为每一行调用该函数。

答案 1 :(得分:2)

构造

SELECT foo FROM foo;

在PostgreSQL中被称为全行引用,因为它可以将整行作为一个整体检索。

如果您知道每个CREATE TABLE都包含一个隐式CREATE TYPE,该隐式定义了与表同名的复合类型,则情况将变得更加清楚。

您可以通过查询目录轻松地看到这一点:

SELECT typname, typtype, typinput, typoutput
FROM pg_type
WHERE typname = 'text';

因此,以上查询的结果是类型为foo的单个项目。由于它是一种复合类型,因此用行符号表示:用括号括起来,用逗号分隔属性值。