根据mysql中另一行的值选择值

时间:2017-07-14 21:43:17

标签: mysql select

是否可以在mysql中创建一个函数,根据同一个表的另一行中的另一个值选择一个值?

鉴于我有5列

player1 | player1server | player2 | player2server | winner | reward
john    |    server1    | nick    |   server2     | nick   |  10

是否可以通过选择查询以某种方式返回获胜者的服务器? 我是非常新的mysql很抱歉,如果这是基本的东西,但我无法在这里找到任何答案帮助我

1 个答案:

答案 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;