我不太喜欢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 ( exist字段为true),否则exist字段值为false。
如何实现此行为?
发布于 2019-03-02 16:48:39
您只需使用一个布尔表达式:
SELECT (count(*) = 2) AS exist2
FROM MeteoForecast mf
WHERE MF.localization_id = 22 AND
DATE(MF.start_date) = DATE('2019-03-02') ;这个表达式实际上返回true为"1“,false返回为"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)上的索引,因此它可以更快。
发布于 2019-03-02 17:01:39
还可以使用用例表达式。
SELECT case when count(*)=2 then true
else false end AS exist
FROM MeteoForecast as MF
WHERE
MF.localization_id = 22
AND
DATE(MF.start_date) = DATE('2019/03/02')https://stackoverflow.com/questions/54960731
复制相似问题