Mysql - пользовательские переменные и порядок по rand в concat

0

У меня есть запрос, который призван вернуть количество жертв войны в текущий день во время Первой мировой войны (точный год выбирается наугад). Однако указанный ниже запрос работает только в том случае, если я устанавливаю переменную 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()));
  • 0
    Возможно, я угадываю неправильно, но не должно ли это быть @rYear := SELECT WarYear FROM new_schema. WW1-Year` ORDER BY RAND () LIMIT 1`
  • 0
    Все еще не работает. Я добавил select и удалил дефис из WW1-лет, чтобы я мог убрать галочки, но теперь верстак сообщает о 2 ошибках вместо оригинальной 1.
Теги:

1 ответ

0

Может ли кто-нибудь сказать мне, что я делаю неправильно?

Это просто не правильный синтаксис. Попробуй это:

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.

  • 0
    Отлично, спасибо. Как вы, возможно, поняли, я скорее новичок в SQL.
  • 0
    @flowerpowered Рад помочь и добро пожаловать в Stack Overflow. Если этот ответ решил вашу проблему, отметьте его как принятый.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню