eg:
把这个
select * from xss_order_detail od
join xss_order o on o.order_id = od.order_id
where o.platform = ‘semitemu’
and od.product_sku = ‘P030017601BEU’
and o.country_code = ‘IT’
and o.currency = ‘USD’
and o.order_no = ‘ST-PO-098-19617058294390208’;
指定条件的xss_order_detail表里面的product_quantity字段的值修改为2
可以使用以下 UPDATE 语句,通过 JOIN 关联条件定位目标记录:
UPDATE xss_order_detail od
JOIN xss_order o ON o.order_id = od.order_id
SET od.product_quantity = 2
WHERE o.platform = 'semitemu'
AND od.product_sku = 'P030017601BEU'
AND o.country_code = 'IT'
AND o.currency = 'USD'
AND o.order_no = 'ST-PO-098-19617058294390208';
执行步骤与安全验证
1.先预览要修改的记录(必做)
SELECT od.*, o.order_no, o.platform
FROM xss_order_detail od
JOIN xss_order o ON o.order_id = od.order_id
WHERE o.platform = 'semitemu'
AND od.product_sku = 'P030017601BEU'
AND o.country_code = 'IT'
AND o.currency = 'USD'
AND o.order_no = 'ST-PO-098-19617058294390208';
确认查询结果是否为预期要修改的记录,避免误操作。
2. 使用事务执行更新(推荐)
START TRANSACTION; -- 开启事务
UPDATE xss_order_detail od
JOIN xss_order o ON o.order_id = od.order_id
SET od.product_quantity = 2
WHERE o.platform = 'semitemu'
AND od.product_sku = 'P030017601BEU'
AND o.country_code = 'IT'
AND o.currency = 'USD'
AND o.order_no = 'ST-PO-098-19617058294390208';
SELECT ROW_COUNT(); -- 查看受影响的行数
COMMIT; -- 确认无误后提交事务
-- 若有误,执行 ROLLBACK; 回滚
关键说明
1.表别名一致性:
xss_order_detail 别名 od,xss_order 别名 o,与原查询保持一致。
2.字段修改范围:
SET od.product_quantity = 2 明确指定修改 xss_order_detail 表的字段,避免歧义。
3.条件完整性:
WHERE 条件与原查询完全一致,确保仅修改目标记录。
注意事项
数据备份:
-- 备份原数据(可选但推荐)
CREATE TABLE xss_order_detail_backup_20250627 AS
SELECT od.* FROM xss_order_detail od
JOIN xss_order o ON o.order_id = od.order_id
WHERE o.platform = 'semitemu'
AND od.product_sku = 'P030017601BEU'
AND o.country_code = 'IT'
AND o.currency = 'USD'
AND o.order_no = 'ST-PO-098-19617058294390208';

1万+

被折叠的 条评论
为什么被折叠?



