繁体   English   中英

最短日期从数据库中查找

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM