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