如何将数组列添加到包含同一 table 中另一列的值的 table
How to add an array column to a table containing values from another column in the same table
考虑table
CREATE TABLE users
(
user_id VARCHAR(128) PRIMARY KEY,
)
添加 auth_identities varchar(128)[]
列后,我不想用 user_id
中的值填充该列(因为我们希望将来支持多个不同的用户身份)。
我设法做到这一点的一种方法是
ALTER TABLE users
ADD auth_identities VARCHAR(128)[];
UPDATE users u SET auth_identities=array((SELECT user_id FROM users u0 WHERE u0.user_id = u.user_id));
不过,我不是特别喜欢 UPDATE
的样子。有什么办法让它更地道一点吗?
不需要 sub-select,只需从现有列构建一个数组:
UPDATE users
SET auth_identities = array[user_id];
考虑table
CREATE TABLE users
(
user_id VARCHAR(128) PRIMARY KEY,
)
添加 auth_identities varchar(128)[]
列后,我不想用 user_id
中的值填充该列(因为我们希望将来支持多个不同的用户身份)。
我设法做到这一点的一种方法是
ALTER TABLE users
ADD auth_identities VARCHAR(128)[];
UPDATE users u SET auth_identities=array((SELECT user_id FROM users u0 WHERE u0.user_id = u.user_id));
不过,我不是特别喜欢 UPDATE
的样子。有什么办法让它更地道一点吗?
不需要 sub-select,只需从现有列构建一个数组:
UPDATE users
SET auth_identities = array[user_id];