如何从同一个表中连接具有多个外键的表?

xiv*_*ivo 1 sql sql-server

愚蠢的问题,但我找不到正确的搜索这个问题,我有一个心灵障碍.我有一个表与参考表中的键,我想避免使用循环来选择没有重复的记录.我需要将模式1-5加入,这样我就可以获得没有重复的名称.请留下评论,以便我澄清.

模式(1-5)是ModeID

例:

表加入

ID
Mode1
Mode2
Mode3
Mode4
Mode5
Run Code Online (Sandbox Code Playgroud)

参考表

ModeID
ModeName
Run Code Online (Sandbox Code Playgroud)

Shm*_*dty 6

这是你的问题的答案:

SELECT 
    m1.ModeName,
    m2.ModeName,
    m3.ModeName,
    m4.ModeName,
    m5.ModeName
FROM Modes m
LEFT JOIN Ref m1 on m1.ModeID = m.Mode1
LEFT JOIN Ref m2 on m2.ModeID = m.Mode2
LEFT JOIN Ref m3 on m3.ModeID = m.Mode3
LEFT JOIN Ref m4 on m4.ModeID = m.Mode4
LEFT JOIN Ref m5 on m5.ModeID = m.Mode5
Run Code Online (Sandbox Code Playgroud)

但我建议你的数据库设计有问题.您应该使用连接表.