簡體   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