Как я Возвращаюсь 0 Из дб MySQL, Когда Термин в операторе Where Не находится в базе данных?

Как я заставляю свою mysql базу данных возвращаться 0, если окружение в операторе Where не существует? Таким образом в примере ниже, Старый Город не находится в базе данных. Я хотел бы, чтобы база данных возвратила 0 инцидентов вместо пустого результата.

SELECT incidents, 
       neighborhoods 
 FROM `myTable` 
WHERE neighborhoods ='Old Town'

Я также попробовал

SELECT IFNULL(incidents,0), 
       IFNULL(neighborhoods,0) 
  FROM `myTable` 
 WHERE neighborhoods ='Old Town'

Любые предложения действительно ценились бы.

5
задан OMG Ponies 6 March 2010 в 22:51
поделиться

4 ответа

Моя задача - создать производную таблицу значений окрестностей , которые вы надеетесь найти, и LEFT JOIN к фактическая таблица:

   SELECT x.neighborhoods,
          COALESCE(mt.incidents, 0) AS incidents
     FROM (SELECT 'Old Town' AS neighborhoods
             FROM DUAL
           UNION ALL
           SELECT 'New Town'
             FROM DUAL) x
LEFT JOIN MYTABLE mt ON mt.neighborhoods = x.neighborhoods
1
ответ дан 15 December 2019 в 00:58
поделиться

Вы можете добавить COUNT (*) в часть выбора, которая дает вам количество строк в наборе результатов. Пока вы хотите прочитать только одну строку, вы получите либо 0 , либо 1 .

SELECT COUNT(*), Foo, Bar FROM Bla WHERE false;
+----------+-----+-----+
| COUNT(*) | Foo | Bar |
+----------+-----+-----+
|        0 | NULL | NULL |
+----------+-----+-----+

SELECT COUNT(*), Foo, Bar FROM Bla WHERE Bar = 0;
+----------+------------+-----+
| COUNT(*) | Foo        | Bar |
+----------+------------+-----+
|        1 | 2147483647 |   0 |
+----------+------------+-----+

Но если вы получите более одной строки, это может привести к ошибке, поскольку вы получите только одну строку из набора результатов.

SELECT COUNT(*), Foo, Bar FROM Bla WHERE Bar >= 0;
+----------+-----+-----+
| COUNT(*) | Foo | Bar |
+----------+-----+-----+
|        7 |   3 |   6 |
+----------+-----+-----+

(И не забудьте использовать псевдоним для столбца COUNT (*) )

0
ответ дан 15 December 2019 в 00:58
поделиться

Если вам нужно вернуть 0 из БД, я предлагаю использовать функцию.

В противном случае вы можете проверить существование из кода, используя запрос COUNT() перед выполнением фактического запроса.

0
ответ дан 15 December 2019 в 00:58
поделиться
SELECT COALESCE(SUM(incidents), 0), 'Old Town'
FROM `myTable`
WHERE neighborhoods = 'Old Town'
3
ответ дан 15 December 2019 в 00:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: