Mysql join 里面的case

Posted

技术标签:

【中文标题】Mysql join 里面的case【英文标题】:Mysql join inside of case 【发布时间】:2016-04-06 00:43:24 【问题描述】:

这不起作用,我还能如何构造这个查询? 根据 debtor_user_type 字段的值,我需要加入相应的表

SELECT * FROM invoice_headers

CASE 
WHEN invoice_headers.debtor_user_type = 0 
THEN

LEFT JOIN user_info 
ON invoice_headers.debtor_id = user_info.user_id    

ELSE

LEFT JOIN company_info 
ON invoice_headers.debtor_id = company_info.company_id    

END

【问题讨论】:

【参考方案1】:

在 ON 子句中使用 LEFT OUTER JOIN 和条件。

试试这个:

SELECT * 
FROM invoice_headers A 
LEFT OUTER JOIN user_info B ON A.debtor_id = B.user_id AND A.debtor_user_type = 0 
LEFT OUTER JOIN company_info C ON A.debtor_id = C.company_id AND A.debtor_user_type <> 0 

【讨论】:

以上是关于Mysql join 里面的case的主要内容,如果未能解决你的问题,请参考以下文章

为什么MySQL不推荐使用子查询和join

MYSQL - 将 SUM 与 JOIN 结合使用

mysql多表left join联合查询效率问题5

mysql select left join问题 数据库

mysql多表left join联合查询效率问题5

MySQL Left Join(左连接) 耗时严重的问题