ホームページ >データベース >mysql チュートリアル >ALTER TABLE 権限なしで MySQL 列の値を交換するにはどうすればよいですか?

ALTER TABLE 権限なしで MySQL 列の値を交換するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-08 08:10:10276ブラウズ

How Can I Swap MySQL Column Values Without ALTER TABLE Permissions?

制限された権限で 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。