mysql - 连接子查询时使用if条件

标签 mysql

我需要在以下查询中,如果 Events.Type 字段等于 1,则带有 XXXXX 的查询部分应如下所示:

ON Stages.ID = Abandonments.IDstage

如果是 2,Events.Type 中带有 XXXXX 的查询部分如下所示:

ON Stages.ID > Abandonments.IDstage

查询

SELECT
*,
  Events.Type
FROM Participants
  INNER JOIN Times
    ON Participants.ID = Times.IDparticipant
  INNER JOIN Events
    ON Events.ID = Participants.IDevent
    AND Events.ID = Times.IDevent
  INNER JOIN Stages
    ON Events.ID = Stages.IDevent
    AND Stages.ID = Times.IDstage
  LEFT OUTER JOIN (SELECT
      Retired.ID,
      Retired.IDstage,
      Retired.IDparticipant,
      Retired.IDevent
    FROM Retired) Abandonments
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    AND Participants.ID = Abandonments.IDparticipant
    AND Events.ID = Abandonments.IDevent
WHERE Times.IDevent = 31
AND Times.IDstage = 156
ORDER BY Participants.ID

谢谢

最佳答案

您的 SQL 查询中有很多 X ,并且不显示您正在尝试构建的限定符,所以我不太知道您在这里试图达到的意图。

但是,您在问题中描述了解决方案。

因此:

ON ((Stages.ID = Abandonments.IDstage AND Events.Type = 1) OR 
   (Stages.ID > Abandonments.IDstage AND Events.Type = 2))

如果这些定义的参数都不为 true(例如 Events.Type = 3),那么您需要添加限定符或 false 返回来排除整个 JOIN

ON ((Stages.ID = Abandonments.IDstage AND Events.Type = 1) OR 
   (Stages.ID > Abandonments.IDstage AND Events.Type = 2)) OR 2=1

关于mysql - 连接子查询时使用if条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55731158/

相关文章:

mysql - 将信息发送到 Dashing 中的小部件

php - 如何知道该行属于哪个表?

php - Android 和 PHP : POST-ing data from Android to mysql db using PHP

java - JPA Criteria Builder 按总和列排序

mysql - 解决创建 MYSQL View 的问题

mysql - 我如何将此查询放入 Eloquent/Laravel 格式?

mysql - 在 CASE .. WHEN 与 WHERE 子句上添加条件?

mysql - Arduino + MySql + MySqlIO 编译时出错

mysql - MySQL更新表与用户所在的邮箱

mysql - http ://magento. 本地恢复为实时站点 - 适用于 OSX 的 Magento 和 Xampp