如何记录MySQL中单个或多个列的变更?附products_table示例
Hey,我来帮你搞定products_table里单列或多列的变更操作,这类需求咱们一般用SQL的UPDATE语句就能轻松实现,先把你的表结构和示例数据整理得更清晰些,再分场景给你举例:
表结构与示例数据
| count | product_id | vendor_id | product_name | size | sku | price |
|---|---|---|---|---|---|---|
| 1 | pro001 | ven001 | case | 10 | A5 | 20 |
| 2 | pro001 | ven005 | case | 9 | A5 | 18 |
| 3 | pro005 | ven002 | bottle | 5 | B2 | 12 |
1. 单列变更(更新单个字段)
比如你想把product_id为pro001且vendor_id为ven001的那条记录的price改成22,就可以这么写:
UPDATE products_table SET price = 22 WHERE product_id = 'pro001' AND vendor_id = 'ven001';
敲黑板!一定要加WHERE条件,不然会把表中所有行的该字段都更新掉,那可就踩坑了!如果确实要更新所有行,可以去掉WHERE,但务必反复确认。
2. 多列变更(同时更新多个字段)
要是需要同时改多个字段,比如更新product_id为pro005的记录的size和price,多个字段用逗号分隔就行:
UPDATE products_table SET size = 6, price = 14 WHERE product_id = 'pro005';
3. 基于其他字段值的动态更新
如果需要根据同一行的其他字段计算更新值,比如给所有product_name为case的记录涨价2块:
UPDATE products_table SET price = price + 2 WHERE product_name = 'case';
4. 批量变更符合条件的多行
比如把所有sku为A5的记录的供应商ID改成ven003:
UPDATE products_table SET vendor_id = 'ven003' WHERE sku = 'A5';
避坑小技巧
- 先查后更:执行
UPDATE前,先用SELECT验证WHERE条件是否精准选中了你要改的行,比如:SELECT * FROM products_table WHERE product_id = 'pro001' AND vendor_id = 'ven001'; - 限制更新行数:像MySQL这类数据库支持加
LIMIT来限制更新行数,避免误操作,比如只更新第一条符合条件的记录:UPDATE products_table SET price = 22 WHERE product_id = 'pro001' LIMIT 1; - 事务保护:如果你的数据库支持事务,建议先开事务,更新后验证数据没问题再提交,出错了可以回滚:
BEGIN TRANSACTION; UPDATE products_table SET price = 22 WHERE product_id = 'pro001' AND vendor_id = 'ven001'; -- 先查一遍确认改对了 SELECT * FROM products_table WHERE product_id = 'pro001' AND vendor_id = 'ven001'; -- 没问题就提交,有问题就执行ROLLBACK COMMIT;
内容的提问来源于stack exchange,提问作者The Naga Tanker
相关产品推荐
相关产品推荐

