Postgres INNER JOIN ERROR: schema "bar" does not exist
Postgres INNER JOIN ERROR: schema "bar" does not exist
我正在尝试在两个 table 之间进行内部连接,foo 和 bar。这种关系是一对多的。一个 bar 需要一个 foo,一个 foo 可以有任意数量的 bar。令人困惑的是,table 都有名为“name”和“id”的列。当我 运行 我的查询时,我想将栏 table 上的那些字段分别重命名为“bar_id”和“bar_name”。这是我的查询:
SELECT foo.*, bar.id 'bar_id', bar.name 'bar_name' FROM foo INNER JOIN bar ON foo.id=bar.foo_id;
当我 运行 这个查询时,我得到: ERROR: schema "bar" does not exist
on bar.id
我尝试为两个 table 名称 f 和 b 使用别名,但我遇到了同样的错误。
我尝试删除“bar”,例如:
SELECT foo.*, id 'bar_id', name 'bar_name' FROM foo INNER JOIN bar ON foo.id=bar.foo_id;
我得到:ERROR: type "id" does not exist
如果我删除“id”,它会起作用,但它不会为列名添加别名,而是替换每一行中该列中的实际值:
SELECT foo.*, name 'bar_name' FROM foo INNER JOIN bar ON foo.id=bar.foo_id;
产量:
id | name | name
1 | abc | bar_name
("bar_name" 实际上应该是 "def")
想知道这里出了什么问题吗?我该如何解决这个问题?
在 Postgres 遵循的标准 SQL 中,单引号代表文字字符串。使用双引号而不是单引号作为标识符(select
子句中的别名)——或者更好的是,根本不用引号:
SELECT
f.*,
b.id as bar_id,
b.name as bar_name
FROM foo f
INNER JOIN bar b ON f.id = b.foo_id;
我正在尝试在两个 table 之间进行内部连接,foo 和 bar。这种关系是一对多的。一个 bar 需要一个 foo,一个 foo 可以有任意数量的 bar。令人困惑的是,table 都有名为“name”和“id”的列。当我 运行 我的查询时,我想将栏 table 上的那些字段分别重命名为“bar_id”和“bar_name”。这是我的查询:
SELECT foo.*, bar.id 'bar_id', bar.name 'bar_name' FROM foo INNER JOIN bar ON foo.id=bar.foo_id;
当我 运行 这个查询时,我得到: ERROR: schema "bar" does not exist
on bar.id
我尝试为两个 table 名称 f 和 b 使用别名,但我遇到了同样的错误。
我尝试删除“bar”,例如:
SELECT foo.*, id 'bar_id', name 'bar_name' FROM foo INNER JOIN bar ON foo.id=bar.foo_id;
我得到:ERROR: type "id" does not exist
如果我删除“id”,它会起作用,但它不会为列名添加别名,而是替换每一行中该列中的实际值:
SELECT foo.*, name 'bar_name' FROM foo INNER JOIN bar ON foo.id=bar.foo_id;
产量:
id | name | name
1 | abc | bar_name
("bar_name" 实际上应该是 "def")
想知道这里出了什么问题吗?我该如何解决这个问题?
在 Postgres 遵循的标准 SQL 中,单引号代表文字字符串。使用双引号而不是单引号作为标识符(select
子句中的别名)——或者更好的是,根本不用引号:
SELECT
f.*,
b.id as bar_id,
b.name as bar_name
FROM foo f
INNER JOIN bar b ON f.id = b.foo_id;