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

カーソルを使用してレコードを更新する方法

    10 から始まる増分値を empno に割り当てたいようです。

    これを行うには、CTE と row_number() を使用できます。カーソルは必要ありません。

    ; with C as( select empno, 9 + row_number() over(order by (select 1)) as NewEmpNo from emp )update Cset empno =NewEmpNo  

    カーソルのバージョンは、同じことを行うために次のようになります。

    DECLARE @empno AS INT;DECLARE @CurEmpNo AS INT;SELECT @empno =10;DECLARE employee_cursor CURSOR FOR SELECT empno FROM empOPEN employee_cursor;FETCH NEXT FROM employee_cursor INTO @CurEmpNoWHILE @@FETCH_STATUS =0 BEGIN UPDATE emp SET empno =@empno WHERE CURRENT OF employee_cursor; SELECT @empno =@empno + 1; FETCH NEXT FROM employee_cursor INTO @CurEmpNo END;CLOSE employee_cursor;DEALLOCATE employee_cursor;   

    1. MySQLで外部キーチェックを無効にする方法

    2. 年を無視して、他の2つの日付の間の日付

    3. MySQLのパフォーマンス:JOIN ON vs WHERE

    4. 時間範囲で個別のユーザーグループを選択する