有人可以幫我嗎,我停電了:)
資料庫 postgres v 10.8
所以我有兩個表(用戶和用戶角色)
Select * from users where id = 1
id groups username
1 ["read","admin"] test
Select * from User_roles
id name
1 write
2 read
3 guest
4 admin
我怎樣才能對陣列中的值進行連接,所以我的輸出將是:
username user_id user_roles_id role
test 1 1 write
test 1 4 admin
uj5u.com熱心網友回復:
with s as
(select id,
json_array_elements_text(groups::json) as role,
username from users
)
select s.username,
s.id user_id,
User_roles.id user_roles_id,
s.role from s inner join User_roles on(s.role=User_roles.name);
輸出
username | user_id | user_roles_id | role
---------- --------- --------------- -------
test | 1 | 4 | admin
test | 1 | 2 | read
uj5u.com熱心網友回復:
SQL:
SELECT b.username,
b.id user_id,
a.id user_role_id,
a.NAME role_name
FROM user_roles a
INNER JOIN (SELECT id,
Unnest(groups) nm,
username
FROM users) b
ON a.NAME = b.nm;
輸出:
username | user_id | user_role_id | role_name
---------- --------- -------------- -----------
test | 1 | 4 | admin
test | 1 | 2 | read
編輯:早期的 SQL 是基于“組”的資料型別是文本 [] 的假設。似乎資料型別是 varchar() 以這種方式插入行。
postgres=# insert into users values(1, '["read","admin"]','test');
因此,修改后的 SQL:
SELECT b.username,
b.id user_id,
a.id user_role_id,
a.NAME role_name
FROM user_roles a
INNER JOIN (SELECT id,
json_array_elements_text(groups::json) nm,
username
FROM users) b
ON a.NAME = b.nm;
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/408055.html
標籤:
