我想创建一个视图,但是会发生这样的错误:
列“?”列?反复指示
angular: ^8.1.1
答案 0 :(得分:1)
列createdAt
和updatedAt
可能来自不同的表,但在视图中具有相同的名称,因此您必须为此输入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 。您需要为此删除单引号。
由于您有多个具有相同名称的列(updatedat
,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 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