postgres内部联接错误:架构“bar”不存在

3zwtqj6y  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(315)

我正在尝试在两个表foo和bar之间进行内部连接。这种关系是一对多的。酒吧需要一个foo,foo可以有任意数量的酒吧。令人困惑的是,这两个表都有名为“name”和“id”的列。当我运行查询时,我想将bar表上的那些字段分别重命名为“bar\u id”和“bar\u 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 酒吧id
我尝试为两个表名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

(“baru name”实际上应该是“def”)
你觉得这里出了什么问题吗?我怎样才能解决这个问题?

bsxbgnwa

bsxbgnwa1#

在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;

相关问题