"select"与"from"是什么意思



给定一个表

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/

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

构造

SELECT foo FROM foo;

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

如果您知道每个CREATE TABLE都有一个隐式CREATE TYPE,它定义了一个与表同名的复合类型,那么事情就会变得更清楚。

通过查询目录,您可以很容易地看到:

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

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

相关内容

最新更新