私はそのような更新クエリを持っています
UPDATE myTable
SET ParentID = X
X を現在更新中の前の行の ID にする必要があります。
何か案は?
私はそのような更新クエリを持っています
UPDATE myTable
SET ParentID = X
X を現在更新中の前の行の ID にする必要があります。
何か案は?
次のスクリプトが役に立つかもしれません (最初の値が前の値を持たないと仮定すると、NULL になります)、これを試すことができますHERE :
CREATE TABLE TEST(
ID INT);
INSERT INTO TEST VALUES(10);
INSERT INTO TEST VALUES(20);
INSERT INTO TEST VALUES(30);
INSERT INTO TEST VALUES(40);
INSERT INTO TEST VALUES(50);
INSERT INTO TEST VALUES(60);
/*HERE THE SCRIPT*/
WITH temp AS (
SELECT x.ID,
ROW_NUMBER() over (order by x.ID) AS n
FROM TEST x
)
UPDATE t
SET t.ID = (SELECT temp.ID FROM temp WHERE temp.n = t.n - 1)
FROM (
SELECT x.ID,
ROW_NUMBER() over (order by x.ID) AS n
FROM TEST x
) t
SELECT * FROM TEST
注:これはもっと簡単な方法で解決できるかもしれませんが、あなたが投稿したもので最初に思いついたのは