MySQL. Обновить сразу несколько строк в одной таблице

Подскажите пожалуйста, возможно ли обновить сразу несколько строк в одной таблице, одним запросом?

UPDATE: Что-то подобное как у INSERT? Т.е. разные значения для каждой строчки.

1 ответов


примерно вот так


  UPDATE TABLE SET
    last_run = NOW(),
    run_counter = run_counter + 1,
    next_run =
  CASE
    WHEN schedule = 'hourly' THEN
      DATE_ADD(NOW(), INTERVAL 1 HOUR)
    WHEN schedule = 'daily' THEN
      DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL TIME_TO_SEC(run_time) SECOND)
    WHEN schedule = 'weekly' THEN
      DATE_ADD(
        DATE_ADD(DATE_SUB(CURDATE(), INTERVAL WEEKDAY(NOW()) DAY), INTERVAL 7 DAY),
      INTERVAL CONCAT(ROUND(run_day-1), ' ', run_time) DAY_SECOND)
    WHEN schedule = 'monthly' THEN
      DATE_ADD(
        DATE_ADD(DATE_SUB(CURDATE(), INTERVAL DAYOFMONTH(NOW())-1 DAY), INTERVAL 1 MONTH),
      INTERVAL CONCAT(ROUND(run_day-1), ' ', run_time) DAY_SECOND)
    ELSE
      DATE_ADD(NOW(), INTERVAL TIME_TO_SEC(run_interval) SECOND)
  END
  WHERE cron_id = {$job['cron_id']}
 


update test_table set title = 'Одинаковый заголовок в 5 строках, где id больше 1, но меньше 6' where id > 1 AND id < 6;
 

Подойдет?

а как у insert?

можно так update table set val='zxc' where id in (5, 23, 765, 8888676)


Самый простой пример, что приходит в голову :


   UPDATE table1 SET col1= col1+10 WHERE col2 > 1;
 
Увеличить все значения col1 на 10 для строк, у которых col2 > 1.