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

行の位置が含まれるように列を更新しています

    これはうまくいくはずです

    update 
    content,
    (
      select 
      @row_number:=ifnull(@row_number, 0)+1 as new_position,
      ContentID 
      from content
      where CategoryID=1
      order by position
    ) as table_position
    set position=table_position.new_position
    where table_position.ContentID=content.ContentID;
    

    しかし、私はこれを最初に、未設定のユーザー定義変数に適用したいと思います

    set @row_number:=0;
    

    Mchlによる追加:

    このような1つのステートメントでそれを行うことができます

    update 
    content,
    (
      select 
      @row_number:=ifnull(@row_number, 0)+1 as new_position,
      ContentID 
      from content
      where CategoryID=1
      order by position
    ) as table_position,
    (
      select @row_number:=0
    ) as rowNumberInit
    set position=table_position.new_position
    where table_position.ContentID=content.ContentID;
    


    1. ODBC4.0

    2. クエリ、ストアドプロシージャ、およびトリガー用のSQLServerパフォーマンスインジケーターの実装

    3. SQL Server DataTypesと同等のC#

    4. Kubernetes AWSでのJenkinsの使用、パート2