Mysql 在两个表中组合多个列

Mysql 在两个表中组合多个列,mysql,sql,postgresql,Mysql,Sql,Postgresql,这是我的桌子: T1记录: T2参考人员: id name 1 Peter 2 John 3 Mary 当我选择T1 id=1时,我希望得到以下结果: id referencePerson1 referencePerson2 referencePerson3 1 Peter John

这是我的桌子:

T1记录: T2参考人员:

id                     name

1                      Peter
2                      John
3                      Mary
当我选择
T1 id=1时,我希望得到以下结果:

id  referencePerson1  referencePerson2  referencePerson3

1       Peter              John             Mary
我该怎么做?
谢谢

您只需三次加入即可:

SELECT t1.id, t21.name, t22.name, t23.name
FROM T1 
    INNER JOIN T2 t21 ON t21.id = T1.referencePerson1ID
    INNER JOIN T2 t22 ON t22.id = T1.referencePerson2ID
    INNER JOIN T2 t23 ON t23.id = T1.referencePerson3ID
WHERE T1.id = 1

这是一种基本的做事方式:

SELECT T1.id, P1.name, P2.name, p3.name 
FROM  record T1 LEFT JOIN referencePerson P1 
ON T1.referencePerson1ID=P1.id
LEFT JOIN referencePerson P2 
ON T1.referencePerson2ID=P2.id
LEFT JOIN referencePerson P3
ON T1.referencePerson3ID=P3.id

当人数未知时,另一种方法是使用PIVOT

注意,如果任何referencePersonNID列包含NULL或referencePerson表中没有匹配的值,则此查询将不会返回该行。(这可能是期望的行为。也可能在所有三列上都没有NULL和(强制的)外键约束。)是的,我知道这一点,所以在写答案时,对我来说是50对50的决定。无论如何,您的评论让OP更清楚地决定是使用内部联接,还是使用左联接:)此查询非常整洁。但是@har07有一个问题,用户想要
referencePerson1 referencePerson2 referencePerson3
,其中作为此查询返回的列为“name”。不管怎样,用户接受意味着他可能会得逞。谢谢,祝你好运。
SELECT T1.id, P1.name, P2.name, p3.name 
FROM  record T1 LEFT JOIN referencePerson P1 
ON T1.referencePerson1ID=P1.id
LEFT JOIN referencePerson P2 
ON T1.referencePerson2ID=P2.id
LEFT JOIN referencePerson P3
ON T1.referencePerson3ID=P3.id