跨多个列的 SQL 联接
Posted
技术标签:
【中文标题】跨多个列的 SQL 联接【英文标题】:SQL Join across multiple columns 【发布时间】:2021-02-26 00:21:20 【问题描述】:我正在 SQLite 中创建一个数据库来记录比赛结果和 SQL 查询,然后显示数据。
我有一张用于赛车手的桌子和一张用于结果的桌子。
赛车手
racerID | racerName |
---|---|
1 | Mark |
2 | Simon |
3 | Geoff |
结果
resultID | 1st | 2nd | 3rd |
---|---|---|---|
1 | 1 | 2 | 3 |
2 | 2 | 3 | 1 |
3 | 1 | 3 | 2 |
如何在所有位置显示姓名而不是只显示他们的 ID?
resultID | 1st | 2nd | 3rd |
---|---|---|---|
1 | Mark | Simon | Geoff |
2 | Simon | Geoff | Mark |
3 | Mark | Geoff | Simon |
我已经设法让它为第 1 列工作。
select Racers.racerName as "1st", Results."2nd",Results."3rd"
from Results
inner join Racers on Results."1st"=Racers.racerID;
但是当我尝试以类似的方式获取其他列时,我得到了一个错误。
select Racers.racerName as "1st", Racers.racerName as "2nd",Racers.racerName as "3rd"
from Results
inner join Racers on Results."1st"=Racers.racerID
inner join Racers on Results."2nd"=Racers.racerID
inner join Racers on Results."3rd"=Racers.racerID;
我确定我忽略了一些非常基本的东西,但不知道如何克服这个问题。
提前致谢。
【问题讨论】:
【参考方案1】:您需要为每个表引用使用单独的别名:
select r1.racerName as "1st", r2.racerName as "2nd", r3.racerName as "3rd"
from Results r join
Racers r1
on r."1st" = r1.racerID join
Racers r2
on r."2nd" = r2.racerID join
Racers r3
on r."3rd" = r3.racerID;
【讨论】:
以上是关于跨多个列的 SQL 联接的主要内容,如果未能解决你的问题,请参考以下文章