Sql 如何基于“if-else”条件连接不同的表

Sql 如何基于“if-else”条件连接不同的表,sql,if-statement,join,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_i

如果候选人的状态为“独立”,我想将候选人表与符号表联接;如果候选人的状态为“政党”,我想将候选人表与政党表联接

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
先谢谢你

您可以在“从”中使用“左连接”,然后在“选择”中合并:

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

您可以在from中使用left join,然后在select中合并:

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

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';