2017-02-13 11 views
1

私はmysqlに参加者テーブルを持っています。たとえば、表のデータは次のようになります。 enter image description hereMysqlのレコード/行の入れ替えPHP

たとえば、間違いがあります。点火は4位になければならない。私はIgnitにドナルドを交換した場合、それは間違っている、このようになります: - >ハリー、Ignit->ジェラード、そう

enter image description here

、私はIgnit 1

ずつを交換するつもりですIgnit->ファンキー、Ignit->エマ、Ignit->ドナルドそれはなりますので:
1.アンディ
2.バリー
3.チャーリー
4. Ignit
5.ドナルド
参加者の千がある場合6.エマ
7.ファンキー
8ジェラード
9.ハリー
10.ジョン

問題があるが、どのように私は入れ替えることができますか? 1つずつスワップするのは面倒で時間がかかります。

Making changes to multiple records based on change of single record with SQL私の質問には答えません。私はより効率的な方法を(もしあれば)したい。

+0

可能な複製(http://stackoverflow.com/questions/40623132/making-changes-to-multiple-records-based-on -change-of-single-record-with-sql) – e4c5

+0

確かにあなたの探している答えではありませんが、私の古い質問の1つが正しい軌道上であなたを導くことができます。 => http://stackoverflow.com/questions/30579523/mysql-incrementing-variable-performance –

+0

あなたはどのように判断しますか - 点火は4でなければなりません。ソートの次元があるか、ランダムなものだけです –

答えて

2

これは不愉快に見えるかもしれませんが、それがあなたに役立つことを願っています。 [SQL持つ単一のレコードの変化に基づいて複数のレコードに変更を加える]の

set @currentorder=9; 
set @correctorder=4; 
set @participant_id=9; 
update participants set participant_order=participant_order+1 where participant_order between @correctorder and @currentorder-1; 
update participants set [email protected] where [email protected]_id;