Как я заставляю свою 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'
Любые предложения действительно ценились бы.
Моя задача - создать производную таблицу значений окрестностей
, которые вы надеетесь найти, и 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
Вы можете добавить 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 из БД, я предлагаю использовать функцию.
В противном случае вы можете проверить существование из кода, используя запрос COUNT() перед выполнением фактического запроса.
SELECT COALESCE(SUM(incidents), 0), 'Old Town'
FROM `myTable`
WHERE neighborhoods = 'Old Town'