小编典典

查看PostgreSQL中的错误

sql

我在PostgreSQL数据库中有一个大型查询。查询是这样的:

SELECT * FROM table1, table2, ... WHERE table1.id = table2.id...

当我将此查询作为sql查询运行时,它将返回所需的行。

但是,当我尝试使用相同的查询创建视图时,它返回错误:

“错误:列“ id”已多次指定。”

(我在执行查询时使用pgAdminIII。)

我猜会发生这种情况,因为结果集将包含一个以上的名为“ id”的列。是否有某种方法可以解决此问题,而无需在查询中编写所有列名?


阅读 223

收藏
2021-03-17

共1个答案

小编典典

之所以会发生这种情况,是因为选择*,一个视图将具有两个名为列的id列,一个来自表1,另一个来自表2。

您需要指定要在视图中使用的ID。

SELECT table1.id, column2, column3, ... FROM table1, table2 
WHERE table1.id = table2.id

该查询之所以有效,是因为它可以具有同名的列…

postgres=# select 1 as a, 2 as a;
 a | a
---+---
 1 | 2
(1 row)

postgres=# create view foobar as select 1 as a, 2 as a;
ERROR:  column "a" duplicated
postgres=# create view foobar as select 1 as a, 2 as b;
CREATE VIEW
2021-03-17