我们有这个查询:
SELECT t FROM articles t WHERE t.article_id = 59446
Run Code Online (Sandbox Code Playgroud)
也称为:
SELECT articles FROM articles WHERE articles.article_id = 59446
Run Code Online (Sandbox Code Playgroud)
我不明白
SELECT articles FROM articles
Run Code Online (Sandbox Code Playgroud)
这是什么意思?为什么会这样?
更新:表'文章'没有列'文章'
这是Postgres的对象关系架构的结果.对于您创建的每个表,还有一个具有相同名称的匹配复合类型.
当你跑步
SELECT articles
FROM articles
Run Code Online (Sandbox Code Playgroud)
您正在从名为表的类型中选择一个列.如果密切关注该查询的输出,您会注意到您的结果只包含一个列,其中值括在括号中,例如(如果表文章有两列).如果运行输出是两列(并且没有括号) articlesarticles(1,Foobar)select * from articles
将括号列表放在括号中时会发生同样的情况:
select (article_id, article_name)
from articles
Run Code Online (Sandbox Code Playgroud)
还返回一个包含两个字段的匿名复合类型的单个列(这也是"列"和"字段"不同的一个很好的例子).