• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:同テーブルで指定カラム値を相互更新(入替)したい)

同テーブルで指定カラム値を相互更新(入替)したい

このQ&Aのポイント
  • MySQLで同テーブルの指定カラムの値を相互に更新する方法を教えてください。
  • 引数によって、特定のカラムの値を入れ替えるSQL文を作成したいです。
  • MySQL5.1環境で処理可能な方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • sava1
  • ベストアンサー率66% (2/3)
回答No.1

動的にSQLを書き換えて実行することはMYSQL単体でも可能です。 (ストアドプロシジャとかで) 頻繁に入れ替えないのなら、それでもいいと思います。 しかし単純なUPDATE文で更新するのの100倍は時間がかかると思います。 (結構めんどくさいですし) そもそも、テーブルの設計に問題があるように思います。 常に4人のデータが入っているのならまだ、いいのですが NULL値などがあるとさらに上の処理が煩雑になります もし、テーブル設計を見直せるなら table pk, group, id, age, sex として insert時に idはgroupでグループ化し、count(pk)+1で取得 1つのグループが5人以上にならないようにトリガでチェックをかける というふうにすれば上のテーブルと同じデータが格納できます。 拡張性も高いです。 で、肝心のUPDATEですが ちょっとわかりません まず、3,1,2の順番から ・「1の数字が付いたカラムの値」を、「3の数字が付いたカラムの値」で更新したい ・「2の数字が付いたカラムの値」を、「1の数字が付いたカラムの値」で更新したい となるのがよくわかりません 予想ですが ・「3の数字が付いたカラムの値」を、「2の数字が付いたカラムの値」で更新したい というのを書き忘れていて、3次の巡回置換(3つの入換という意味)を表しているのか つまり1,2,3が3,1,2になるのか…(1) それとも1,2,3が3,3,3になるのか…(2) はたまた1,2,3が3,1,3になるのか…(3) たぶん(3)だと思うのですがそれって意味がないような…。 まあ、どれでもテーブル構造さえ見直せば結構簡単にかけるので テーブル設計を見直せるならやってみてください

re999
質問者

お礼

回答ありがとうございました。 アドバイスを元に見直してみますー