制限された権限で MySQL 列の値を交換する
データベース構造を変更する権限なしで列の値を更新すると、問題が発生する可能性があります。 UPDATE table SET X=Y, Y=X など、UPDATE ステートメントを使用して値を交換する直感的なアプローチでは十分ではありません。代わりに、構造の変更を回避する次の方法を検討してください。
方法 1
一時変数を使用して、一方の値を保持しながら、もう一方の値を割り当てます。これにより、両方の値が同じデータで上書きされなくなります。
UPDATE swap_test SET x=y, y=@temp WHERE (@temp:=x) IS NOT NULL;
方法 2
一連の代入を使用して値を交換します。このメソッドは、NULL 値と非 NULL 値の両方を適切に処理します。
UPDATE swap_test SET x=(@temp:=x), x = y, y = @temp;
方法 3
自己結合を利用して、2 つのテーブル参照にわたる値を更新します。この方法には主キーまたは一意のインデックスが必要です。
UPDATE swap_test s1, swap_test s2 SET s1.x=s1.y, s1.y=s2.x WHERE s1.id=s2.id;
各方法には固有の利点と制限があります。方法 1 は NULL 以外の値を処理できますが、方法 2 は NULL 値と非 NULL 値の両方を処理できます。方法 3 では主キーが必要ですが、必要に応じて異なる行間での交換が可能です。最終的に、最適なアプローチは、当面のタスクの特定の要件によって異なります。
以上がALTER TABLE 権限なしで MySQL 列の値を交換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。