我有两张表格,格式如下:
表名:"奖项"
id | Name | Exp_1 | Exp_2 | Exp_3
1 | Joe | 1 | 2 | 3
2 | Bob | 1 | | 3
3 | James | | 2 |
表名:" Exp"
id | Exp
1 | Service
2 | Integrity
3 | Timeliness
我需要创建的结果表:
id | Name | Exp_1_val | Exp_2_val | Exp_3_val
1 | Joe | Service | Integrity | Timeliness
2 | Bob | Service | | Timeliness
3 | James | | Integrity |
所以基本上如果其中一个" Exp _"我的奖励表中的列不为空,我需要它来自Exp表的相应值。但我无法将这些与ID号匹配,只与它们的值相匹配。是否有一种类型的连接可以做到这一点?
答案 0 :(得分:1)
您似乎需要多个左连接:
select a.id, a.name, e1.exp as exp1, e2.exp as exp2, e3.exp as exp3
from awards a left join
exp e1
on a.exp_1 = e1.id left join
exp e2
on a.exp_2 = e2.id left join
exp e3
on a.exp_3 = e3.id ;
答案 1 :(得分:0)
试试这个
SELECT a.id, a.Name, exp1.Exp, exp2.Exp, exp3.Exp FROM Awards a
LEFT JOIN Exp exp1 on exp1.id = a.Exp_1
LEFT JOIN Exp exp2 on exp2.id = a.Exp_2
LEFT JOIN Exp exp3 on exp3.id = a.Exp_3
您需要将奖励表中的每个Exp字段加入Exp表, 如果没有值将它们链接起来,请使用LEFT JOIN。
答案 2 :(得分:-1)
您可以使用左连接以将两个表放在一起。请参阅下表以帮助您了解它。来自Wiki https://en.wikipedia.org/wiki/Join_(SQL)