提供表格
mytestdb=# select * from foo;
id | name
----+------
4 | Tim
(1 row)
select foo from foo
输出什么,即select
与from
相同的表是什么意思?谢谢。
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)
答案 0 :(得分:4)
在表的当前行的选择列表generates和composite value中使用表名或别名。将表名或别名传递给可以接受复合值的函数将为每一行调用该函数。
答案 1 :(得分:2)
构造
SELECT foo FROM foo;
在PostgreSQL中被称为全行引用,因为它可以将整行作为一个整体检索。
如果您知道每个CREATE TABLE
都包含一个隐式CREATE TYPE
,该隐式定义了与表同名的复合类型,则情况将变得更加清楚。
您可以通过查询目录轻松地看到这一点:
SELECT typname, typtype, typinput, typoutput
FROM pg_type
WHERE typname = 'text';
因此,以上查询的结果是类型为foo
的单个项目。由于它是一种复合类型,因此用行符号表示:用括号括起来,用逗号分隔属性值。