0

データベースのレイアウトを再設計していて、障害にぶつかりました:

現在名前が付けられている元のテーブルにItems_Oldは、次の 3 つの重要な列がありました。

Name | Width | Length

それ以来、ItemSizes次の新しいテーブルを作成しました。

ID | Width | Length

そして最後に呼び出されたItems

Name | SizeID

テーブルからItemSizesテーブルにSizeID を選択する方法を理解しようとしていますItems

where Items_Old.Name = Items.Name and Items_Old.Width = ItemSizes.Width 
      AND Items_Old.Length = ItemSizes.Length

次のように、SizeID と Items_Old.Name のリストを取得できるようになりました。

Select IST.ID , Old.Name
From ItemSizes AS IST, Items_Old AS Old
Where IST.Width = Old.Width 
       And  IST.Length = Old.Length 

しかし、次のようなことを試みると:

Insert Into Items
(SizeID)
Select IST.ID , Old.Name
From ItemSizes AS IST, Items_Old AS Old
Where IST.Width = Old.Width 
       And  IST.Length = Old.Length
Where Items.Name = Info.Name

私も試した2番目の場所のために構文エラーが発生します

Insert Into Items
(SizeID)
(Select IST.ID , Old.Name
From ItemSizes AS IST, Items_Old AS Old
Where IST.Width = Old.Width 
       And  IST.Length = Old.Length) As Info 
Where Items.Name = Info.Name

しかし、エラーが発生しましたnear "("

4

1 に答える 1

1

UPDATE ステートメントでは、相関サブクエリを使用して値を検索できます。

UPDATE Items
SET SizeID = (SELECT ID
              FROM ItemSizes
              JOIN Items_Old USING (Width, Length)
              WHERE Name = Items.Name)
于 2014-03-25T21:43:25.007 に答える