SELECT
IsTestBatch,
BatchID,
CampaignID,
IF(ActualTriggerDateTime IS NOT NULL,
MIN(ActualTriggerDateTime),
MIN(TriggerDateTime)) AS NextQueuedOn
FROM
campaignbatches
WHERE
Status IN (2,3)
GROUP BY
CampaignID
ORDER BY
IF(ActualTriggerDateTime IS NOT NULL, ActualTriggerDateTime, TriggerDateTime) ASC
if条件无法正常运行,并且MIN日期不符合我的预期.
我期望上面的记录,但是它返回表中前一张图像的第一条记录:
解决方法:
由于聚合函数MIN()会忽略NULL值,因此您可以尝试从ActualTriggerDateTime列中选择最小日期,在特殊情况下,此列上的所有值均为NULL,然后从TriggerDateTime列中选择最小值.
SELECT
IsTestBatch,
BatchID,
CampaignID,
IFNULL(MIN(ActualTriggerDateTime), MIN(TriggerDateTime)) AS NextQueuedOn
FROM
campaignbatches
WHERE
Status IN (2,3)
GROUP BY
IsTestBatch, BatchID, CampaignID
ORDER BY
NextQueuedOn ASC