У меня есть запрос, который призван вернуть количество жертв войны в текущий день во время Первой мировой войны (точный год выбирается наугад). Однако указанный ниже запрос работает только в том случае, если я устанавливаю переменную rYear в отдельный запрос и просто ссылаюсь на нее в этом вопросе. День и месяц прекрасно работают. Может ли кто-нибудь сказать мне, что я делаю неправильно? Заранее спасибо.
SELECT Deaths FROM new_schema.totals WHERE Date = concat
(@rYear := WarYear FROM new_schema.'WW1-years' ORDER BY RAND() LIMIT 1,'-',
@MonthNum := MONTH(curdate()),'-',
@DateNum := DAYOFMONTH(curdate()));
Может ли кто-нибудь сказать мне, что я делаю неправильно?
Это просто не правильный синтаксис. Попробуй это:
SELECT Deaths FROM new_schema.totals WHERE Date = CONCAT(
(SELECT @rYear := WarYear FROM new_schema.WW1-years ORDER BY RAND() LIMIT 1),
'-',
@MonthNum := MONTH(curdate()),
'-',
@DateNum := DAYOFMONTH(curdate())
);
В качестве побочного примечания, поскольку WW1 окончена (очевидно), вы можете просто использовать floor(1914 + rand() * 5)
вместо таблицы, упорядоченной rand.
@rYear := SELECT WarYear FROM new_schema.
WW1-Year` ORDER BY RAND () LIMIT 1`