2017-07-14 78 views
-2

是否可以在mysql中創建一個基於同一表中另一行中另一個值的值的函數?根據mysql中另一行的值選擇值

給我有5列

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

是否有可能以某種方式回到勝利者的基礎上有選擇查詢贏家列服務器? 即時通訊非常新的如此對不起,如果這是基本的東西,但我無法找到任何答案在這裏,幫助我

+0

像'選擇情況下,當贏家= payer1然後player1server其他player2server從table'結束了嗎? –

+0

5列?嗯? – Strawberry

回答

0

你沒有指定表的名稱,所以我稱之爲「遊戲」。

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; 
+0

謝謝你。 是的,即時通訊相當確定按照您的建議來做這件事會更好,但是當我開始搞亂mysql時(比如4天前),我甚至都不知道加入表格的可能性。 即時通訊不知道爲什麼我downvoted壽,但非常感謝你幫助! – FCS

相關問題