Как я могу изменить этот запрос, чтобы он возвращал true, если значение счетчика select (*) равно 2? - PullRequest
0 голосов
/ 02 марта 2019

Я не очень в 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 как поле exist .

Я хочу изменить его следующим образом:

, если значение count (*) равно 2, возвращается true ( Существует поле имеет значение true), в противном случае Существуют значение поля имеет значение false.

Как я могу реализовать это поведение?

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

Вы также можете использовать регистр выражений

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')
0 голосов
/ 02 марта 2019

Вы можете просто использовать логическое выражение:

SELECT (count(*) = 2) AS exist2
FROM MeteoForecast mf                       
WHERE MF.localization_id = 22 AND
      DATE(MF.start_date) = DATE('2019-03-02') ;

Это выражение фактически возвращает истину как «1» и ложь как «0».Это числовые эквиваленты логических значений true и false в MySQL.

Предполагая, что 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), поэтому он может быть намного быстрее.

...