将多个外键连接到同一个表的最佳方法

时间:2011-07-20 02:26:39

标签: mysql sql join

我有一个表“user”,其中有几行是同一个表“content”的外键,有点像这样:

user.id
user.bio
user.signature

content.id
content.text

我知道从标准化的角度来看,这不是正确的方法,但“内容”表来自我无法修改的单独数据库。我不想复制数据。

我在寻找加入他们的好方法时遇到了问题。我能做的就是这个,但这似乎很浪费。

SELECT bio.bio, text.text
FROM(
SELECT content.text as bio
FROM content, user
WHERE user.bio = content.id
AND user.id = 4) AS bio,

SELECT content.text as content
FROM content, user
WHERE user.signature = content.id
AND user.id = 4) AS content

1 个答案:

答案 0 :(得分:10)

如果为每个实例提供不同的别名,则可以多次连接一个表:

SELECT bio.text, sig.text
FROM user u
JOIN content bio ON u.bio       = bio.id
JOIN content sig ON u.signature = sig.id
WHERE u.id = 4