sql >> データベース >  >> RDS >> Sqlserver

前の行と現在の行の値で行を更新するためのカーソル

    OK、これを試してください。

    CREATE TABLE MyTable (Id INT Identity, Col2 int, Col3 int)
    
    INSERT INTO MyTable (Col2, Col3)
    VALUES (2,1), (3,0), (4,0),(5,0),(6,0)
    
    SELECT * from MyTable
    
    WHILE (SELECT COUNT(*) FROM MyTable WHERE Col3=0) > 0
    BEGIN
        UPDATE TOP (1) MyTable
        SET CoL3 = (Mytable.col2 + (select col3 from mytable t2 where (t2.id = mytable.id-1)))
        WHERE Col3 = 0
    END
    
    SELECT * from MyTable
    

    WHILE を使用します ほとんどの状況でカーソルよりも高速なループです。



    1. 最大値を表示し、残りを制限するためのページ付け

    2. PostgreSQLでの複数の配列の交差

    3. 代理キーで逆インデックスを使用することをお勧めしますか? (Oracle)

    4. PHP挿入クエリの再調整は成功しましたが、テーブルにデータを挿入していません