在具有相同主键的字段上更新值

时间:2019-01-08 19:04:51

标签: sql

我陷入了一个需要帮助的问题:

我有一个简单的表格,如下所示,

table

我希望保留SKU A的INV字段值,并用SKU的{​​{1}}值的%20更新其他SKU A,其中INV字段等于XREF的{​​{1}}。

有人可以协助如何为此逻辑编写SQL查询吗?

2 个答案:

答案 0 :(得分:0)

您可以使用以下查询。

update语句具有where约束,该约束仅选择要更新的行。另一方面,内部查询的t2.INVSKU = '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'的记录
  • 在所有其他记录中,用记录中INVINV与当前记录相同的记录中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'所在的行无关)。