使用3个表的条件选择语句

时间:2016-09-01 20:29:12

标签: mysql

我正在尝试做一个有条件的case语句,并且不确定sql是否可以执行此操作。 我需要从表A中选择ID,并从表B中的相应ID中选择Name。如果表B中的Name为NULL,我需要从表C中选择Name。我不知道如何使用表CASE或者如果可能的话,任何帮助都会受到极大关注。

Table A      Table B         Table C       
ID   ID2     ID2    Name      ID2    Name    
________     ___________      ___________   
1     3      1      bill      1     NULL        
2     2      2      steve     2     NULL
3     1      3       NULL     3     george

3 个答案:

答案 0 :(得分:0)

使用IFNULL()BC中选择相应的列。

SELECT a.id, IFNULL(b.name, c.name) AS name
FROM a
JOIN b ON a.id = b.id2
JOIN c ON a.id = c.id2

如果BC中可能缺少匹配的行,请使用LEFT JOIN代替JOIN

答案 1 :(得分:0)

尝试以下查询:

select IFNULL(TableB.name, TableC.name) as name 
from TableA 
left join TableB TableA.ID2=TableB.ID2 
left join TableC TableA.ID2=TableC.ID2

答案 2 :(得分:0)

我太慢了:p 如果它可以帮助某人,那么这是一个小提琴:http://sqlfiddle.com/#!9/b28c5/2

我假设每个ID2值都存在于TableB / TableC的两者或两者中。