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

すべてのエントリをヒットせずに物事のリストを更新します

    @oldと仮定します はリンゴの古い位置の値4であり、@new 新しいポジション1です。

    set @old = 4;
    set @new = 1;
    
    UPDATE Items
    SET `order value` = 
      CASE `order value` WHEN @old THEN @new
      ELSE `order value` + SIGN(@[email protected]) END
    WHERE `order value` BETWEEN LEAST(@old, @new) AND GREATEST(@old, @new);
    

    MySQL 5.1.52を使用して、サンプルデータでこれをテストしましたが、機能します。同じSQLは、初期のエントリを後で移動したり、途中で移動したりする必要がある場合にも機能します。@oldの値を設定するだけです。 および@new



    1. CentOS6にCassandrav3をインストールする方法

    2. Maven-java.lang.ClassNotFoundException:com.mysql.jdbc.Driver

    3. OracleのDATEDIFF関数

    4. MySQLテーブルへの単純なリストの挿入(php)