Только начал знакомство с MySQL. Поясните почему я могу сделать так
SELECT `Дата заключения` AS Подписан,
CASE
WHEN month(`Дата заключения`) BETWEEN 3 AND 5 THEN 'Весна'
WHEN month(`Дата заключения`) BETWEEN 6 AND 8 THEN 'Лето'
WHEN month(`Дата заключения`) BETWEEN 9 AND 11 THEN 'Осень'
ELSE 'Зима'
END AS Сезон
FROM договор
ORDER BY Подписан DESC;
Но не могу сделать так
SELECT `Дата заключения` AS Подписан,
CASE month(`Дата заключения`)
WHEN BETWEEN 3 AND 5 THEN 'Весна'
WHEN BETWEEN 6 AND 8 THEN 'Лето'
WHEN BETWEEN 9 AND 11 THEN 'Осень'
ELSE 'Зима'
END AS Сезон
FROM договор
ORDER BY Подписан DESC;
То есть вопрос в том, как написать вычисление месяца один раз.
По стандарту SQL. Сокращенный CASE допускает только сравнение с конкретными значениями и только на равенство.
как написать вычисление месяца один раз
Можете, конечно, попробовать использовать переменную:
SELECT `Дата заключения` AS Подписан,
CASE
WHEN (@month:=month(`Дата заключения`)) BETWEEN 3 AND 5 THEN 'Весна'
WHEN @month BETWEEN 6 AND 8 THEN 'Лето'
WHEN @month BETWEEN 9 AND 11 THEN 'Осень'
ELSE 'Зима'
END AS Сезон
FROM договор
ORDER BY Подписан DESC;
Но, во-первых, профит копеечный, фиг заметишь, во-вторых, сервер не дурак, и скорее всего сам выполнит вычисление только один раз (он же формализует выражения).
Хотя я бы вообще сделал так:
SELECT `Дата заключения` AS Подписан,
ELT(1+(month(`Дата заключения`) DIV 3), 'Зима', 'Весна', 'Лето', 'Осень', 'Зима') AS Сезон
FROM договор
ORDER BY Подписан DESC;
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
При на писании запроса возникла следующая проблема: В столбце "A" есть одно кол-во в одном месте "3264" оно всегда одинаковое в столбце "Б" есть...
Имеется файл примерно на 700 000 записей, мне необходимо периодически его проверять, если есть изменения то делаю update в базу,если нет то записываю...
У меня не получается сделать авторизацию на сайте! Регистрирует у меня все хорошо, а вот войти на сайт не хочет! Я пользуюсь функцией md5() и у меня...