Mysql 从一个不同id的表中显示两个名称
我有两张桌子 tb_masteropsiMysql 从一个不同id的表中显示两个名称,mysql,join,Mysql,Join,我有两张桌子 tb_masteropsi id, type, name 1, Job, Painter 2, Job, Singer 3, Use, Kanvas 4, Use, Guitar 5, Use, Microphone tb\U员工 id, name, job, use 1, Jhon, 1, 3 2, Mark, 2, 4 3, Tom, 2, 5 我使用的这个查询显然不起作用 select a.*, b.* from tb_
id, type, name
1, Job, Painter
2, Job, Singer
3, Use, Kanvas
4, Use, Guitar
5, Use, Microphone
tb\U员工
id, name, job, use
1, Jhon, 1, 3
2, Mark, 2, 4
3, Tom, 2, 5
我使用的这个查询显然不起作用
select
a.*,
b.*
from tb_employee a
join tb_masteropsi b
on a.job = b.id and a.use = b.id;
我的目标是得到以下结果
id, name, job, use
1, Jhon, Painter, Kanvas
2, Mark, Singer, Guitar
3, Tom, Singer, Microphone
如何修复它?您必须加入
tb\u employee
表两次,才能从该表中获得两个不同的行(一次用于tb\u employee
表的'job'列,一次用于'use'列)
所以你需要这样的东西才能达到预期的效果
SELECT
te.`id`,
te.`name`,
tm1.`name` as 'job',
tm2.`name` as 'use'
FROM `tb_employee` te
LEFT JOIN `tb_masteropsi` tm1
ON tm1.`id`=te.`job`
LEFT JOIN `tb_masteropsi` tm2
ON tm2.`id`=te.`use`
;
<强>注:请考虑将<代码> TBJMasopopsie/Cudio>表分成两个单独的表,一个是“作业”,一个是“使用”。 Navicat测试预览:
既然您意识到无论如何都需要两次连接到表,现在是修复设计中缺陷的时候了:分别为
作业
和使用
创建两个单独的表,此时您可以删除现在冗余的类型
列。