これは私を少し困らせました。私はSQLの教祖ではありませんので、私に同行してください。同じテーブルへのクエリに基づいてテーブルの列を更新します
私は、各行が(階層を形成するために)「親」を持つことができるテーブルを持っています。例えば「アイテム1.1」はその親として「アイテム1」を有する。
ID列が変更されています(この例では、英数字から自動増分番号に変更されています)。
新しい「ParentId」フィールドには、既存の列データから正しい「親」を作成する方法を教えてください。次のように
私は(非常に単純化された)テーブルを持っている:私が何をしようとしています何
ExampleTable
=============
OldId OldParentId Title NewId NewParentId
-----------------------------------------------------
A Null Item 1 1 Null
B A Item 1.1 2 Null
C A Item 1.2 3 Null
D Null Item 2 4 Null
E D Item 2.1 5 Null
は、既存のテーブルに対して検索をもとに、「NewParentId」フィールドに移入されます。
マイ(明確に動作していない)の擬似コードは次のとおりです。
Update ExampleTable
Set NewParentId = (Select Top 1 NewId From ExampleTable WHERE OldId = ???.OldParentId)
私は選択クエリで「現在の行が更新され、」参照する方法を知りません。
これを達成するための正しいアプローチですか?
ああ、「nulls」を適切に識別して処理する必要があります(たとえば、「項目1」および「項目2」には親がないため、親ID値は「NULL」値を保持する必要があります)
ロジックを説明する必要があります。あなたが達成しようとしていることは明らかではありません! – techspider
[OK]を、私はそれをより明確にするためにもう少し詳細を追加しました –