我通常会用谷歌搜索我的问题,因为它们并不是我独有的。但是,这次我找不到答案(可能没有使用正确的关键字)。
问题描述:
我有两个表。
第一张表 - defenition_list 包含唯一的 ID 和名称
ID | NAME
-----------
1 | BMW
2 | AUDI
3 | VW
4 | MAZDA
第二个表 - used_id 保存第一个表中的 ID
ID | def_uid1 | def_uid2 | def_uid3
------------------------------------
1 | 2 | 3 | 2
2 | 4 | 2 | 1
所以通常如果我只需要返回一列的值,我会像这样选择:
SELECT d.NAME, u.def_uid1 FROM defenition_list d, used_id u WHERE d.ID=u.def_uid1
但是如何编写查询来同时获取 def_uid2 和 def_uid3 的名称呢?所以结果看起来像:
ID | def_uid1 | def_uid2 | def_uid3 |
--------------------------------------
1 | AUDI | VW | AUDI |
2 | MAZDA | AUDI | BMW |
最佳答案
你必须加入你的名字表 3 次:
SELECT used_id.ID, d1.name, d2.name, d3.name
FROM used_id
LEFT JOIN definition_list AS d1 ON used_id.def_uid1 = d1.id
LEFT JOIN definition_list AS d2 ON ...
LEFT JOIN definition_list AS d3 ON ...
关于mysql从另一个表中选择一行的多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30576545/