mysql - 加入子查询时使用 if 条件
问题描述
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))
如果这些定义的参数都不是真的(比如Events.Type = 3
),那么你需要添加一个限定符或一个错误的返回来排除这个整体JOIN
ON ((Stages.ID = Abandonments.IDstage AND Events.Type = 1) OR
(Stages.ID > Abandonments.IDstage AND Events.Type = 2)) OR 2=1
推荐阅读
- c++ - C++ 构造函数与相同键/值类型的 std::map 不明确
- cplex - 展平 CPLEX OPL 中的数组数组
- python - “没有模块命名请求”即使我安装了 pip、请求并将其添加到 PATH
- java - 扩展 Java 数组时遇到问题
- python - 给定一串North South East或West,我如何找到某物前进的方向(逆时针或顺时针)
- python - pygame 敌人向玩家的二维运动,如何计算 x 和 y 速度?
- amazon-web-services - 如何检查“20210228”是否为有效日期?
- ruby-on-rails - 优化最大数量的选项以显示客户给定的现有选择集合
- python - NameError:名称“mNewCal”未定义问题
- c++ - 错误:不匹配调用 '(const std::ranges::__sort_fn)