如何根据'if else'条件加入不同的表

时间:2017-06-19 23:59:21

标签: sql if-statement join

如果候选人的状态为“独立”,我希望将候选人表与符号表联系起来,如果候选人的状态是“派对”,我希望与派对表联系

在sql中有没有办法执行这样的查询,或者你可以建议任何其他解决方案。

Example:
Select * from candidate c 
if c.status='party' 
JOIN party p on p.party_id = c.party_id
else if c.status='independent'
JOIN symbol s on s.symbol_id = c.symbol_id

提前谢谢你。

1 个答案:

答案 0 :(得分:0)

您可以使用left join中的from,然后使用coalesce()中的select

Select c.*, coalesce(c.col1, s.col1) as col1, . . .
from candidate c left join
     party p  
     on p.party_id = c.party_id and c.status = 'party' left join
     symbol s
     on s.symbol_id = c.symbol_id and c.status = 'independent';

coalesce()从匹配表中选择列的值(由于c.status上的条件,只有一个可以匹配。)