通过 MySQL 上的索引表获取值

Get values by index tables on MySQL

我有两个表:

Table1 (id, name, var1, var2, var3)

Vars (id, name)

附实例行数:

Table1:

1, John, 3, 6, 7
2, Peter, 1, 4, 3

Table 两个(变量):

1, Cat
2, Dog
3, Fish
4, Cow
5, Goat
6, Bear
7, Bird
8, Koala
9, Lion
10, Frog

期望的输出是:

1, John, Fish, Bear, Bird
2, Peter, Cat, Cow, Fish

我尝试使用一些 INNER JOINS 但我认为我做错了,因为我无法获得正确的结果,我该如何实现?谢谢

您需要 join vars table 三次。或者与一行中变量的数量一样多。

select t1.id, t1.name, v1.name, v2.name, v3.name
from table1 t1
join vars v1 on v1.id = t1.var1
join vars v2 on v2.id = t1.var2
join vars v3 on v3.id = t1.var3

使用LEFT JOIN处理缺失值:

SELECT t1.id, t1.name, v1.name AS name_1, v2.name AS name_2, v3.name AS name_3
FROM Table1 t1
LEFT JOIN Vars v1
  ON t1.var1 = v1.id
LEFT JOIN Vars v2
  ON t1.var2 = v2.id
LEFT JOIN Vars v3
  ON t1.var3 = v3.id