如何在查询中获取两列带有id的两个名称? Innerjoin可选吗?

时间:2014-04-25 10:31:55

标签: sql database sqlite

我在sqlite中有两个表:

名称

id     name
---   -----
1     Tyrion
2     Arya
3     Snow

信息

id    otherID
---  ---------
2    1
3    2
1 

我如何才能得到这个结果?

2, Arya, 1, Tyrion
3, Snow, 2, Arya
1, Tyrion

如果我执行此查询:

SELECT info.id, names.name, info.otherID, names2.name
FROM info
inner join names on names.id = info.id
inner join names as names2 on names2.id = info.otherID

我只得到这个:

2, Arya, 1, Tyrion
3, Snow, 2, Arya

这不会出现:

1, Tyrion

如何获取可选字段otherid的列表?

2 个答案:

答案 0 :(得分:1)

尝试使用LEFT JOIN

SELECT info.id, names.name, info.otherID, names2.name
FROM info
LEFT JOIN names on names.id = info.id
LEFT JOIN names as names2 on names2.id = info.otherID

答案 1 :(得分:1)

左连接是答案。

SELECT info.id, names.name, info.otherID, names2.name
FROM info
LEFT join names on names.id = info.id
LEFT join names as names2 on names2.id = info.otherID

如果info表中的条目(加入语句中的右侧),您希望拥有names的所有行(在连接语句中保留左表)。