我正在尝试做一个有条件的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
答案 0 :(得分:0)
使用IFNULL()
从B
或C
中选择相应的列。
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
如果B
或C
中可能缺少匹配的行,请使用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的两者或两者中。