次のようなテーブルがあります。
| ID | game | player | their_turn |
===================================
| 1 | 1 | 1 | 0 |
-----------------------------------
| 2 | 1 | 2 | 1 |
-----------------------------------
| 3 | 1 | 3 | 0 |
-----------------------------------
| 4 | 1 | 4 | 0 |
-----------------------------------
| 5 | 1 | 5 | 0 |
私の目標は、ID で並べ替えられた特定のゲームについて、your_turn が 1 の直後のプレーヤーを選択し、最大 ID に達したときに最小/最初の ID にループバックすることです。
例:今のようにプレイヤー2のターンならプレイヤー3を選択したい、プレイヤー5のターンならプレイヤー1を選択したい、そしてプレイヤー1の時はプレイヤー2を選択したい.
すべての行を選択した後、いつでも PHP でこれを処理できますが、MySQL でこれを正しく行うにはどうすればよいか疑問に思っていました。
更新: 新しいテーブル構造
テーブルを再構築することになりました。their_turn は別のテーブルに移動されました (無関係な列は除外されます):
Players Rounds
| ID | game | | ID | game | player |
============= ======================
| 1 | 1 | | 1 | 1 | 1 |
| 2 | 1 | | 2 | 1 | 2 |
| 3 | 1 |
| 4 | 1 |
| 5 | 1 |
つまり、同じ目標です。並んでいる次のプレーヤーを選択します。ID がゲームの最新ラウンドのプレイヤー ID より大きいか、そうでない場合は、そのゲームの最小プレイヤー ID のいずれかです。私は、MySQL で IF ステートメントを使用したことがありません。これは必要なことだと思いますが、その方法を理解するのに苦労しています。