[英]get the row with datetime which is the latest datetime less than a selected date in mysql
[英]Cannot get records with datetime less than system date
我想,以檢查是否記錄列表有datetime
小於系統datetime
,這些記錄必須也有外地status
平等為1
或2
。 我所做的是以下幾點:
SELECT SUM(m2.datetime < NOW() AND m2.status IN (1, 2)) < 0 AS result
FROM `match` m2 WHERE m2.round_id = @round_id GROUP BY m2.round_id
該查詢在以下情況下不起作用:
id | datetime | status |
1 2018-11-30 18:00:00 5
2 2018-12-09 13:30:00 5
3 2018-12-15 14:00:00 5
4 2018-12-21 13:30:00 5
5 2019-01-08 17:45:00 1
如您在上面顯示的記錄列表中所看到的,我有4條狀態為5
記錄,所有這些記錄的日期都小於當前系統的datetime
。 現在,我還有一條狀態為1
記錄,其日期時間小於當前日期,因此查詢結果應為true
,因為存在一條status
為1
的記錄,且其datetime
時間小於當前時間比系統datetime
。 為什么查詢返回false?
如果要計數,請刪除< 0
。
SELECT round_id, SUM(m2.datetime < NOW() AND m2.status IN (1, 2))AS result
FROM `match` m2
WHERE m2.round_id = @round_id
GROUP BY m2.round_id
或者更好的是,將條件移到where
子句:
SELECT COUNT(*) AS result
FROM `match` m2
WHERE m2.round_id = @round_id AND
m2.datetime < NOW() AND m2.status IN (1, 2)
比較永遠不會返回小於0的值,因為如果我正確理解了您想返回true的話,就不需要比較,而且我也看不到SUM的需要,因此我將查詢更改為
SELECT (m2.datetime < NOW() AND m2.status IN (1, 2)) AS result
FROM `match` m2 WHERE m2.round_id = @round_id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.