首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果select(*)计数值为2,如何更改此查询以返回true?

如果select(*)计数值为2,如何更改此查询以返回true?
EN

Stack Overflow用户
提问于 2019-03-02 16:46:06
回答 2查看 30关注 0票数 0

我不太喜欢SQL,我有以下的疑问。我有一个查询(我使用的是MySql):

代码语言:javascript
复制
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。

如何实现此行为?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-02 16:48:39

您只需使用一个布尔表达式:

代码语言:javascript
复制
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有一个时间组件,您应该将它写成:

代码语言:javascript
复制
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)上的索引,因此它可以更快。

票数 1
EN

Stack Overflow用户

发布于 2019-03-02 17:01:39

还可以使用用例表达式。

代码语言:javascript
复制
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')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54960731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档