mysql - LEFT JOIN 语法上的 CASE 条件

标签 mysql join left-join case

回答这个问题后,在一组左连接中获取一个 CASE 将不再令人烦恼!

但是我有以下疑问:这是应用 case 语句的正确方法吗?该方法在 case 语句(最后一个括号)之前给出语法错误,表示缺少右括号

from((((((`tbl_workflow_step_item`
LEFT JOIN `tbl_workflow_step_users` ON ((`tbl_workflow_step_item`.`step_id` = `tbl_workflow_step_users`.`step_id`)))
LEFT JOIN `tbl_workflow_steps` ON ((`tbl_workflow_step_item`.`step_id` = `tbl_workflow_steps`.`step_id`)))
LEFT JOIN `tbl_workflow_user_assigned` ON ((`tbl_workflow_step_users`.`user_id` = `tbl_workflow_user_assigned`.`user_id`)))
LEFT JOIN `tbl_workflow` ON ((`tbl_workflow`.`workflow_id` = `tbl_workflow_steps`.`workflow_id`)))
LEFT JOIN `tbl_report_type` ON ((`tbl_report_type`.`type_id` = `tbl_workflow_step_item`.`type`)))
case
when (`tbl_workflow`.`type` = 2) 
then 
left join `tbl_report_file` on ((`tbl_report_file`.`file_id`=`tbl_workflow_step_item`.`target_item_id`))) 
else
LEFT JOIN `tbl_blog` ON ((`tbl_blog`.`blog_id` = `tbl_workflow_step_item`.`target_item_id`)))

最佳答案

不,这不好。 Case/when 语句不能用在 JOIN 部分。这是你应该做的:

SELECT 
 CASE
    WHEN(`tbl_workflow`.`type` = 2) 
      THEN `tbl_report_file`.YOURFIELDHERE
    ELSE
    `tbl_blog`.YOURFIELDHERE
 END AS theAliasYouWant
FROM((((((`tbl_workflow_step_item`
LEFT JOIN `tbl_workflow_step_users` ON ((`tbl_workflow_step_item`.`step_id` = `tbl_workflow_step_users`.`step_id`)))
LEFT JOIN `tbl_workflow_steps` ON ((`tbl_workflow_step_item`.`step_id` = `tbl_workflow_steps`.`step_id`)))
LEFT JOIN `tbl_workflow_user_assigned` ON ((`tbl_workflow_step_users`.`user_id` = `tbl_workflow_user_assigned`.`user_id`)))
LEFT JOIN `tbl_workflow` ON ((`tbl_workflow`.`workflow_id` = `tbl_workflow_steps`.`workflow_id`)))
LEFT JOIN `tbl_report_type` ON ((`tbl_report_type`.`type_id` = `tbl_workflow_step_item`.`type`)))
LEFT JOIN `tbl_report_file` on ((`tbl_report_file`.`file_id`=`tbl_workflow_step_item`.`target_item_id`)))
LEFT JOIN `tbl_blog` ON ((`tbl_blog`.`blog_id` = `tbl_workflow_step_item`.`target_item_id`)))

关于mysql - LEFT JOIN 语法上的 CASE 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39851918/

相关文章:

java - Hibernate + MySQL - 如何获得不可猜测的生成 ID?

mysql - rails : Use of 'foreign_key'

MySQL View 将INT列的SUM转换为小数类型

java - SQL语法错误

MYSQL-自引用外键

PHP: Doctrine: order joined records

php - 处理和防止死锁的正确方法

sql - PostgreSQL:合并两个表中的记录并计算平均值

PostgreSQL:LEFT JOIN 创建空白行

mysql - SQL-显示 null、0 和非当前值