同じテーブルの別の行にある別の値に基づいて値を選択する関数をmysqlで作成することは可能ですか?
与えられた私は5列を持っています
player1 | player1server | player2 | player2server | winner | reward
john | server1 | nick | server2 | nick | 10
選択クエリで勝者列に基づいて勝者のサーバーを何らかの方法で返すことは可能ですか? 私はmysqlに非常に新しいので、これが基本的なものである場合は申し訳ありませんが、ここで私を助けた答えを見つけることができませんでした
テーブルの名前を指定しなかったので、「ゲーム」と呼びます。
SELECT if (winner = player1, player1server, player2server) FROM game;
勝者からの値= player1からの値の場合、player1server列が選択されます。それ以外の場合は、player2serverが選択されます。
私がこのデータベースを設計していたら、次のような独自のテーブルにプレーヤーを配置します。
| id | name | server |
| 1 | John | server1 |
| 2 | Nick | server2 |
そしてゲームテーブル:
| id | player1_id | player2_id | winner_id | reward |
| 1 | 1 | 2 | 2 | 10 |
このように、各プレーヤーの名前とサーバー情報がゲームテーブルの各行で繰り返されることはなく、選択でIFステートメントを使用する必要はありません。代わりに、次のようなことができます (ゲーム ID と勝者のサーバーを選択します):
SELECT g.id, p.server FROM game g LEFT JOIN player p ON g.winner_id = p.id;
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加