- ベストアンサー
同テーブルで指定カラム値を相互更新(入替)したい
- MySQLで同テーブルの指定カラムの値を相互に更新する方法を教えてください。
- 引数によって、特定のカラムの値を入れ替えるSQL文を作成したいです。
- MySQL5.1環境で処理可能な方法を教えてください。
- みんなの回答 (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)だと思うのですがそれって意味がないような…。 まあ、どれでもテーブル構造さえ見直せば結構簡単にかけるので テーブル設計を見直せるならやってみてください
お礼
回答ありがとうございました。 アドバイスを元に見直してみますー