尽我所能:
我有什么...
Table users:
user_id | user_name
1 | Jack
2 | Chuck
Table jobs:
job_id | job_name
1 | Farmer
2 | Ninja
3 | Teacher
我希望只使用 JOIN 就可以做的...
user_id | user_name | user_role
1 | Jack | 1, 2
2 | Chuck | 2, 3
我真正想要的...
user_id | user_name | user_role
1 | Jack | Farmer, Ninja
2 | Chuck | Ninja, Teacher
那么,我应该怎么做呢?顺便说一下,我使用的是 knexjs,但有了 SQL 解释,我可以自己完成剩下的工作。
最佳答案
首先,您缺少将用户与其工作相关联的联结表:
user_jobs
user_id | job_id
1 | 1
1 | 2
2 | 2
2 | 3
定义了这个表后,我们只需要一系列连接:
SELECT
u.user_id,
u.user_name,
STRING_AGG(j.job_name, ',' ORDER BY j.job_id) user_role
FROM users u
INNER JOIN user_jobs uj
ON u.user_id = uj.user_id
INNER JOIN jobs j
ON uj.job_id = j.job_id
GROUP BY
u.user_id,
u.user_name;
关于sql - 如何在同一列中加入不同的 FK 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55656278/