[英]Min Date find from database
我有一个查询如下:
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
所有选择列都将分组
SELECT IsTestBatch,BatchID,CampaignID,
coalesce(MIN(ActualTriggerDateTime),MIN(TriggerDateTime)) AS NextQueuedOn
FROM campaignbatches
WHERE Status IN (2,3)
and IsTestBatch=1 and BatchID=42 -- as you want single row
GROUP BY IsTestBatch,BatchID,
CampaignID
ORDER BY NextQueuedOn ASC
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.