是否有可能,首先加入if条件,第二次加入Else条件

时间:2017-12-29 07:15:49

标签: mysql

是否可以在MYSQL中

有三个表

  1. 任务(task_id,task_status,...)
  2. tasks_assigned_to (ta_id,task_id,user_id)
  3. task_suggested_to (ts_id,task_id,user_id)
  4. 用户(user_id,...)
  5. select user_id  
    if task_status = 2 
    join task_assigned_to ta on ta.task_id = tasks.task_id 
    else 
    join task_suggested_to ts on ts.task_id = tasks.task_id
    

    以下是我的示例查询我想要的内容。

    所有答案都将受到赞赏

    谢谢

2 个答案:

答案 0 :(得分:1)

只使用你的条件加入

SELECT * FROM t
JOIN task_assigned_to ta ON ta.task_id = t.task_id AND  t.task_status = 2 
JOIN task_sugggested_to ts ON ts.task_id = t.task_id

这是fiddle,一般的想法是使用LEFT连接获取所有数据,然后使用WHERE ts IS NOT NULL和COLAESCE ..或任何您需要的任何内容过滤它。

答案 1 :(得分:1)

您可以加入两者,并在您选择的字段中使用if语句。 这在某些数据集/表中很有用,但如果连接速度很慢或者您从不需要两个结果,则应该避免使用。 但是,如果您打勾,您可能希望同时显示受让人和建议的受让人(如果不同)。

select
  ticket.id
  empassign.name assigned,
  empsuggested.name suggested,
  ifnull(empassigned.name,empsuggested) autoassigned
from
ticket
left join emps empassign on empassign.id=ticket.assignedid
left join emps empsuggested on empassign.id=ticket.suggestedid