是否可以在mysql中创建一个函数,根据同一个表的另一行中的另一个值选择一个值?
鉴于我有5列
player1 | player1server | player2 | player2server | winner | reward
john | server1 | nick | server2 | nick | 10
是否可以通过选择查询以某种方式返回获胜者的服务器? 我是非常新的mysql很抱歉,如果这是基本的东西,但我无法在这里找到任何答案帮助我
答案 0 :(得分:0)
您没有指定表格的名称,因此我将其称为“#34;游戏"。
SELECT if (winner = player1, player1server, player2server) FROM game;
如果来自winner1的值=来自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;