我不太喜欢SQL,但我有以下疑问。我有此查询(我正在使用MySql):
SELECT count(*) AS exist
FROM MeteoForecast AS MF
WHERE
MF.localization_id = 22
AND
DATE(MF.start_date) = DATE('2019/03/02')
将记录数作为存在字段返回到MeteoForecast表中。
我想以这种方式修改它:
如果count(*)的值等于2,则返回true(existing字段为true),否则existing字段值为false。
如何实现这种行为?
最佳答案
您可以只使用布尔表达式:
SELECT (count(*) = 2) AS exist2
FROM MeteoForecast mf
WHERE MF.localization_id = 22 AND
DATE(MF.start_date) = DATE('2019-03-02') ;
该表达式实际上返回“ 1”为真,“ 0”为假。这些是MySQL中布尔值true和false的数值等效项。
假设
start_date
具有时间分量,则应这样写:SELECT (count(*) = 2) AS exist2
FROM MeteoForecast mf
WHERE MF.localization_id = 22 AND
MF.start_date >= '2019-03-02' AND
MF.stara_date < '2019-03-03' ;
这可以利用
MeteoForecast(localization_id, start_date)
上的索引,因此可以更快。