我陷入了一个需要帮助的问题:
我有一个简单的表格,如下所示,
我希望保留SKU A
的INV字段值,并用SKU
的{{1}}值的%20更新其他SKU A
,其中INV
字段等于XREF
的{{1}}。
有人可以协助如何为此逻辑编写SQL查询吗?
答案 0 :(得分:0)
您可以使用以下查询。
update语句具有where约束,该约束仅选择要更新的行。另一方面,内部查询的t2.INV
与SKU = 'A'
update tbl t1
set INV = (select t2.INV * 0.2 from tbl t2 where t2.sku = 'A')
where XREF != null and SKU != 'A'
答案 1 :(得分:0)
这是一个疯狂的猜测。
我认为您的样本数据不相关。我们了解您要更新查询:
SKU = 'A'
的记录INV
和INV
与当前记录相同的记录中SKU = 'A'
的20%来更新XREF
< / li>
以下是该查询:
UPDATE mytable t1 INNER JOIN mytable t2 ON t2.sku = 'A' AND t2.xref = t1.xref SET t1.inv = t2.inv * 0.2 WHERE t1.sku != 'A'
请注意,使用这种技术,无法连接的记录将不会被更新(即,如果XREF
为空或与SKU = 'A'
所在的行无关)。