MariaDB更新表IF x null然后更新x else update y

时间:2018-01-18 14:06:05

标签: mysql sql database mariadb

我正在做一个短期项目。我需要做一个脚本来填充表中的用户。 无论如何,我不知道如何以一种好的方式写下我的请求,这就是我想做的事情:

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;

我尝试了很多不同的方法,但我不能成功,它一直告诉我我的语法错误。

以下是完整的请求:

cacheDom

也许你们会对如何解决这个问题有所了解。 感谢您的阅读

1 个答案:

答案 0 :(得分: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,否则会返回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;