2

大家好

我希望从同一个表中的一行更新我的表中的一行,

我有一张名为 INVENTORY 的表。它存储产品的价格。我有销售代码和相关的库存代码。

我希望将所有 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"

销售代码看起来像这样“U_12345”,它的股票代码等效看起来像“S_​​12345”

谢谢

4

2 回答 2

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"
于 2011-03-01T01:10:13.567 回答
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 语法基于文档页面。

于 2011-03-01T08:18:35.730 回答