UPDATE в MySQL — 50 жизненных приёмов (уникальные кейсы)

100 практических кейсов MySQL UPDATE: JOIN, LIMIT, CASE, JSON, транзакции и синхронизация.

🟢 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.

Понравилась статья? Поделиться с друзьями: