Iは、以下の表を持っている場合:ActIDはのParentIDに基づいて、連続番号である再計算サブクエリ
CREATE TABLE Acts (ParentID int, ActID int, Text nvarchar(255))
---------------------
1 | 1 | "Hello"
1 | 2 | "Hello again"
2 | 1 | "lol"
2 | 2 | "rofl"
。 と私は次のように行のサブセットごとに新しい行を挿入する必要があります:私は、私が欲しい
1 | 1 | "Hello"
1 | 2 | "Hello again"
1 | 3 | "Hello"
1 | 3 | "Hello again"
...
を得た
INSERT INTO Acts
SELECT ParentID, (SELECT MAX(ActID) + 1 FROM Acts), Text FROM Acts WHERE Text LIKE 'Hello%'
:
1 | 1 | "Hello"
1 | 2 | "Hello again"
1 | 3 | "Hello"
1 | 4 | "Hello again"
私はすぐにサブクエリがあることに気づきましたINSERTが実行される前に評価されるだけなので、常に同じ最大値を返します。結果を1つずつ挿入してサブクエリを更新するか、サブクエリを各行の後に更新する必要があることを指定する方法はありますか?
あなたは「(...)法のINSERT INTO VALUES(...)」を意味するか、時間 –
にエントリを作成するために選択を変えることができますか?しかし、私はクエリの各結果の行を挿入する必要があります。 –
はい、カーソルを使用して行ごとにlastID +1を挿入することができます。 – Jesus