2

こんにちは、みんな

同じテーブル内の行からテーブル内の行を更新したいのですが、

INVENTORY というテーブルがあります。製品のPRICESを保存します。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」のようになります。

ありがとう

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 ステートメントで更新されたレコードの値が必要なときだけです。その場合、エイリアスを使用して 2 つの参照を区別する必要があります。例えば...

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 に答える