全部
我希望从同一个表中的一行更新表格中的一行
我有一个名为INVENTORY的表。它存储产品的价格。 我有SALES代码,我有与之相关的STOCK代码。
我希望将所有PRICING从SALES代码转移到STOCK代码。
我希望做这样的事情:
update INVENTORY
set PRICE = (SELECT PRICE WHERE CODE = "SALES CODE EQUIVALENT OF THE STOCK CODE IM IN")
WHERE
CODE = "SOME STOCK CODE"
SALES CODE看起来像这个“U_12345”,它的STOCK代码相当于“S_12345”
感谢
答案 0 :(得分:1)
你非常接近,你只需要指定你在子查询中选择哪个表...
update INVENTORY
set PRICE = (SELECT PRICE FROM your_table WHERE CODE = "SALES CODE EQUIVALENT OF THE STOCK CODE IM IN")
WHERE
CODE = "SOME STOCK CODE"
即使“your_table”是INVENTORY,您仍然需要在那里指定它。
唯一一次变得“棘手”的是当您从同一个表中选择要更新时,以及当您需要SELECT语句中更新记录的值时。在这种情况下,您需要使用别名来区分两个引用。例如......
update INVENTORY
set PRICE = (SELECT PRICE FROM INVENTORY AS [new_price] WHERE [new_price].CODE = INVENTORY.NEW_CODE)
WHERE
CODE = "SOME STOCK CODE"
答案 1 :(得分:0)
UPDATE INVENTORY
SET PRICE = i_sales.PRICE
FROM INVENTORY, INVENTORY i_sales
WHERE INVENTORY.CODE LIKE 'S\_%'
AND i_sales.CODE = REPLACE(INVENTORY.Code, 'S', 'U')
这会更新INVENTORY
中所有“库存”记录的价格,其价格来自相应的“销售”记录。
如果您希望更新单个价格,请将WHERE
更改为以下内容:
WHERE i_stock.CODE = 'S_12345'
或者这个:
WHERE i_stock.CODE IN ('S_12345', 'S_12346')
注意:使用的FROM语法基于this doc页。