列“?列?”反复指示

时间:2019-12-05 09:53:13

标签: sql postgresql sql-view

我想创建一个视图,但是会发生这样的错误:

  

列“?”列?反复指示

angular: ^8.1.1

2 个答案:

答案 0 :(得分:1)

createdAtupdatedAt可能来自不同的表,但在视图中具有相同的名称,因此您必须为此输入Alias

尝试以下

CREATE VIEW v_users AS
    SELECT 
        users.user_id,
        users.full_name,
        users.username,
        users.password,
        roles.role_name,
        roles.role_id,
        users.roles_id,
        'users.createdAt' AS UserCreatedAt,
        'users.updatedAt' AS UserUpdatedAt,
        'roles.createdAt' AS RoleCreatedAt,
        'roles.updatedAt' AS RoleUpdatedAt
    FROM users
    INNER JOIN roles
    ON users.roles_id = roles.role_id;

答案 1 :(得分:1)

您没有选择列,而是在视图中选择了字符串常量。而且字符串常量没有名称,因此Postgres将其命名为“ 'users.createdAt'”。

我强烈认为您实际上并不想在视图中使用字符串值createdat,而是希望各个表列的实际 content 。您需要为此删除单引号。

由于您有多个具有相同名称的列(updatedatCREATE VIEW v_users AS SELECT users.user_id, users.full_name, users.username, users.password, roles.role_name, roles.role_id, users.roles_id, users.createdAt as user_created_at, users.updatedAt as user_updated_at, roles.createdAt as roles_created_at, roles.updatedAt as roles_updated_at FROM users INNER JOIN roles ON users.roles_id = roles.role_id; ),因此需要给它们提供适当的别名:

http://localhost:3000/register