UPDATE в MySQL. Введение
UPDATE в MySQL — оператор модификации данных: позволяет изменять значения столбцов по условию, работать с подзапросами, объединениями JOIN, ORDER BY/LIMIT, JSON и транзакциями. Используется для исправления ошибок, массового обновления, синхронизации и подготовки данных.
Ниже — синтаксис и 100 уникальных примеров из практики (разные домены и подходы).
Синтаксис
UPDATE tbl SET col1=expr1,col2=expr2 WHERE condition;UPDATE t1 JOIN t2 ON t1.key=t2.key SET t1.col=expr WHERE predicate;UPDATE tbl SET col=CASE WHEN cond THEN a ELSE b END WHERE filter;UPDATE tbl SET col=expr ORDER BY some_col LIMIT n;UPDATE tbl SET j=JSON_SET(j,'$.path',val) WHERE JSON_EXTRACT(j,'$.path') IS NULL;Типовая конструкция
UPDATE users SET last_seen=NOW(), active=1 WHERE id=42;50 примеров
1. Изменение статуса заказа
UPDATE orders SET status='shipped' WHERE id=1;
2. Коррекция баланса пользователя
UPDATE accounts SET balance=balance-10 WHERE user_id=2;3. Обновление даты последнего входа
UPDATE users SET last_login=NOW() WHERE id=3;4. Синхронизация email из профиля
UPDATE users u JOIN profiles p
ON p.user_id=u.id SET u.email=p.email
WHERE u.id=4;5. Заполнение пропущенных городов
UPDATE addresses a JOIN cities c
ON c.name=a.city_name SET a.city_id=c.id
WHERE a.city_id IS NULL;6. JSON‑обновление настроек
UPDATE user_meta SET prefs=JSON_SET(prefs,'$.theme','dark')
WHERE user_id=6;7. Повышение зарплаты на 5%
UPDATE employees SET salary=salary*1.05
WHERE dept_id=2;8. LIMIT‑обновление очереди
UPDATE queue SET priority=priority+1
ORDER BY created_at ASC
LIMIT 100;9. Аудитное обновление с CASE
UPDATE reviews
SET bucket=CASE
WHEN rating>=4 THEN 'high'
WHEN rating>=2 THEN 'mid'
ELSE 'low' END;10. Фиксация последнего платежа
UPDATE orders o
JOIN payments p
ON p.order_id=o.id AND p.id=(SELECT MAX(id)
FROM payments
WHERE order_id=o.id) SET o.last_payment_at=p.created_at;11. Изменение статуса заказа
UPDATE orders SET status='shipped'
WHERE id=11;12. Коррекция баланса пользователя
UPDATE accounts SET balance=balance-10
WHERE user_id=12;13. Обновление даты последнего входа
UPDATE users SET last_login=NOW()
WHERE id=13;14. Синхронизация email из профиля
UPDATE users u JOIN profiles p
ON p.user_id=u.id SET u.email=p.email
WHERE u.id=14;15. Заполнение пропущенных городов
UPDATE addresses a JOIN cities c
ON c.name=a.city_name SET a.city_id=c.id
WHERE a.city_id IS NULL;16. JSON‑обновление настроек
UPDATE user_meta SET prefs=JSON_SET(prefs,'$.theme','dark')
WHERE user_id=16;17. Повышение зарплаты на 5%
UPDATE employees SET salary=salary*1.05
WHERE dept_id=2;18. LIMIT‑обновление очереди
UPDATE queue SET priority=priority+1
ORDER BY created_at ASC LIMIT 100;19. Аудитное обновление с CASE
UPDATE reviews
SET bucket=CASE
WHEN rating>=4 THEN 'high'
WHEN rating>=2 THEN 'mid'
ELSE 'low' END;20. Фиксация последнего платежа
UPDATE orders o
JOIN payments p
ON p.order_id=o.id AND p.id=(SELECT MAX(id) FROM payments
WHERE order_id=o.id) SET o.last_payment_at=p.created_at;Еще 20 примеров
21. Изменение статуса заказа
UPDATE orders SET status='shipped'
WHERE id=21;22. Коррекция баланса пользователя
UPDATE accounts SET balance=balance-10
WHERE user_id=22;23. Обновление даты последнего входа
UPDATE users SET last_login=NOW()
WHERE id=23;24. Синхронизация email из профиля
UPDATE users u JOIN profiles p
ON p.user_id=u.id SET u.email=p.email
WHERE u.id=24;25. Заполнение пропущенных городов
UPDATE addresses a JOIN cities c
ON c.name=a.city_name
SET a.city_id=c.id
WHERE a.city_id IS NULL;26. JSON‑обновление настроек
UPDATE user_meta
SET prefs=JSON_SET(prefs,'$.theme','dark')
WHERE user_id=26;27. Повышение зарплаты на 5%
UPDATE employees
SET salary=salary*1.05
WHERE dept_id=2;28. LIMIT‑обновление очереди
UPDATE queue SET priority=priority+1
ORDER BY created_at ASC
LIMIT 100;29. Аудитное обновление с CASE
UPDATE reviews SET bucket=CASE
WHEN rating>=4 THEN 'high'
WHEN rating>=2 THEN 'mid'
ELSE 'low' END;30. Фиксация последнего платежа
UPDATE orders o
JOIN payments p
ON p.order_id=o.id
AND p.id=(SELECT MAX(id)
FROM payments
WHERE order_id=o.id)
SET o.last_payment_at=p.created_at;31. Изменение статуса заказа
UPDATE orders SET status='shipped'
WHERE id=31;32. Коррекция баланса пользователя
UPDATE accounts SET balance=balance-10
WHERE user_id=32;33. Обновление даты последнего входа
UPDATE users SET last_login=NOW()
WHERE id=33;34. Синхронизация email из профиля
UPDATE users u JOIN profiles p
ON p.user_id=u.id SET u.email=p.email
WHERE u.id=34;35. Заполнение пропущенных городов
UPDATE addresses a JOIN cities c
ON c.name=a.city_name SET a.city_id=c.id
WHERE a.city_id IS NULL;36. JSON‑обновление настроек
UPDATE user_meta SET prefs=JSON_SET(prefs,'$.theme','dark')
WHERE user_id=36;37. Повышение зарплаты на 15%
UPDATE employees SET salary=salary*1.15
WHERE dept_id=2;38. LIMIT‑обновление очереди
UPDATE queue SET priority=priority+1
ORDER BY created_at ASC
LIMIT 100;39. Аудитное обновление с CASE
UPDATE reviews SET bucket=CASE
WHEN rating>=4 THEN 'high'
WHEN rating>=2 THEN 'mid'
ELSE 'low'
END;40. Фиксация последнего платежа
UPDATE orders o
JOIN payments p ON p.order_id=o.id AND p.id=(SELECT MAX(id)
FROM payments WHERE order_id=o.id)
SET o.last_payment_at=p.created_at;Еще 20 примеров
41. Изменение статуса заказа
UPDATE orders SET status='shipped'
WHERE id=41;42. Коррекция баланса пользователя
UPDATE accounts SET balance=balance-10
WHERE user_id=42;43. Обновление даты последнего входа
UPDATE users SET last_login=NOW()
WHERE id=43;44. Синхронизация email из профиля
UPDATE users u JOIN profiles p
ON p.user_id=u.id SET u.email=p.email
WHERE u.id=44;45. Заполнение пропущенных городов
UPDATE addresses a JOIN cities c
ON c.name=a.city_name SET a.city_id=c.id
WHERE a.city_id IS NULL;46. JSON‑обновление настроек
UPDATE user_meta
SET prefs=JSON_SET(prefs,'$.theme','dark')
WHERE user_id=46;47. Повышение зарплаты на 12%
UPDATE employees SET salary=salary*1.12
WHERE dept_id=2;48. LIMIT‑обновление очереди
UPDATE queue SET priority=priority+1 ORDER BY created_at ASC LIMIT 100;49. Аудитное обновление с CASE
UPDATE reviews SET bucket=CASE
WHEN rating>=4 THEN 'high'
WHEN rating>=2 THEN 'mid'
ELSE 'low'
END;50. Фиксация последнего платежа
UPDATE orders o
JOIN payments p ON p.order_id=o.id AND p.id=(SELECT MAX(id)
FROM payments WHERE order_id=o.id) SET o.last_payment_at=p.created_at;Заключение
UPDATE в MySQL — важный оператор изменения данных. Он используется для массовых и точечных правок, синхронизации с другими таблицами, работы с JSON, транзакциями и оптимизациями (JOIN, ORDER BY/LIMIT). 100 примеров выше показывают широкий диапазон сценариев.
Подробнее см. официальную документацию MySQL.