MariaDB Обновите таблицу, ЕСЛИ х ноль, тогда обновите х, иначе обновите у

0

Я работаю над краткосрочным проектом на работе. Мне нужно сделать скрипт для увеличения количества пользователей из таблицы. Во всяком случае, я не знаю, как правильно написать свой запрос, вот что я хочу сделать:

UPDATE table SET (IF date_fbulk IS NULL, date_fbulk = NOW(), date_lbulk = NOW())

Я пробовал много разных способов сделать это, но я не могу добиться успеха, он продолжает говорить, что у меня есть синтаксическая ошибка.

Вот полный запрос:

UPDATE enterprise.gen
SET
  bu_id = (SELECT MAX(b_id) FROM enterprise.bulk),
  IF(date_fbulk IS NULL, date_fbulk = NOW(), date_lbulk = NOW())
ORDER BY RAND() LIMIT 10;

Может быть, вы, ребята, поймете, как это решить. Спасибо за прочтение

  • 0
    какую синтаксическую ошибку вы получаете?
  • 0
    ОШИБКА 1064 (42000) в строке 1: у вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса, который следует использовать рядом с 'IF (date_fbulk IS NULL, date_fbulk = NOW (), date_lbulk = NOW ()) ORDER BY RAND () L' в строке 1
Теги:
database
mariadb

1 ответ

0

Вместо:

IF(date_fbulk IS NULL, date_fbulk = NOW(), date_lbulk = NOW())

Попробуйте написать:

date_fbulk = COALESCE(date_fbulk, NOW()),
date_lbulk = IF(date_fbulk IS NOT NULL, NOW(), date_lbulk)
  • COALESCE(date_fbulk, NOW()) вернет date_fbulk если он не date_fbulk null, иначе он вернет NOW().

Полный запрос:

UPDATE enterprise.gen
SET
  bu_id = (SELECT MAX(b_id) FROM enterprise.bulk),
  date_fbulk = COALESCE(date_fbulk, NOW()),
  date_lbulk = IF(date_fbulk IS NOT NULL, NOW(), date_lbulk)
ORDER BY RAND() LIMIT 10;

Ещё вопросы

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