0
私はこれに問題があります。私が必要とするのは、私のevent
テーブルにorder
という列の一意の値を取得することです。この事は、どのように振る舞うべきか :例えば私はテーブルの `イベントカラムにユニークな値を設定し、ユニークでない場合は他のカラムを下に移動
| id | name | order |
|----|---------|-------|
| 1 | walking | 1 |
| 2 | diving | 2 |
| 3 | skating | 3 |
を持っている例えば、私は1
にskating
順序を更新しようとすると、私は
| id | name | order |
|----|---------|-------|
| 3 | skating | 1 |
| 1 | walking | 2 |
| 2 | diving | 3 |
を取得するには、それを行うにはどのようには考えています、これを試してみましたが、それは私のためには機能しません:
Yii::$app->db->createCommand("
SET @rownum :=0;
UPDATE " . self::tableName() . "
LEFT JOIN (
SELECT id, (@rownum := @rownum + 1) AS rowNumber
FROM " . self::tableName() . "
ORDER BY order ASC
) as tmp_table
on tmp_table.id = " . self::tableName() . ".id
SET " . self::tableName() . ".order = tmp_table.rowNumber"
)->execute();
あなたが理解できない場合は、私はすべてのことを説明しようとします。
Idフィールドは、更新前の3だっ変化していなかったと更新後は3です。しかし、注文は3から1に変更されました –
私の悪いことはテーブル – e4c5
を間違って読んでしまいました。つまり、スケートとウォーキングの間でスワップされる注文列の価値を言いますか? – e4c5