MYSQL Мне нужно по умолчанию, если нет результата - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть таблица (currency_table), которая имеет 3 столбца «дата», «валюта», «курс».

, и мне нужно запросить с синтаксисом ниже

select date, rate from currency_table where date in ('20010101','20190921','20190920');

втаблица (currency_table), нет данных для 20010101

, поэтому у меня есть результат, например 2019-09-20 1200 2019-09-21 1200.1

, но я должен иметь возвращаемое значение "ноль""если нет значения

как я могу это сделать ???

и еще один вопрос

результат всегда отображается в порядке даты.

Могу ли я получить заказ на результат, который я написал?

1 Ответ

0 голосов
/ 20 сентября 2019

Здесь необходимо использовать таблицу с именем calendar , которая отслеживает все даты, которые вы хотите включить в свои отчеты.Примером будет лучший способ объяснить:

SELECT
    d.date,
    COALESCE(t.rate, 0.0) AS rate
FROM
(
    SELECT '2001-01-01' AS date UNION ALL
    SELECT '2019-09-21' UNION ALL
    SELECT '2019-09-20'
) d
LEFT JOIN currency_table t
    ON d.date = t.date AND
WHERE
    d.date IN ('2001-01-01', '2019-09-21', '2019-09-20')
ORDER BY
    d.date;

На практике вы, вероятно, замените подзапрос, который я пометил как d, на истинную таблицу, содержащую все даты, на которые вы, возможно, захотитесообщать курсы валют.Обратите внимание, что поскольку я использовал левое объединение выше, каждая дата в таблице календаря гарантированно будет отображаться в наборе результатов.Тем не менее, для несоответствующих дат появится показатель 0.0 (который, вероятно, никогда не будет в реальном мире).

...