2

2つのテーブルがあります。
player1にはrowsusername、score、game_id、...の行があります
player2にはrows username、score、game_idがあります...
同じgame_idに対して最大のスコアを持つユーザー名をどのように選択しますか?

私が持っているのは

SELECT player1.username winning,
  player1.points,
  player1.game_id 
FROM player1 
INNER JOIN player2 ON player1.game_id = player2.game_id
WHERE player1.points > player2.points

SELECT player2.username winning,
  player2.points,
  player2.game_id 
FROM player1 
INNER JOIN player2 ON player1.game_id = player2.game_id
WHERE player2.points > player1.points  
4

1 に答える 1

5

これはそれを行う必要があります:

SELECT
    game_id, 
    CASE WHEN p1.score > p2.score THEN p1.username ELSE p2.username END AS winner
FROM
    player1 p1
INNER JOIN
    player2 p2 ON p1.game_id = p2.game_id
ORDER BY 
    p1.game_id ASC

ダリウスが述べたように、抽選の状況に応じてCASEステートメントを調整したい場合は、次のように変更できます。

CASE WHEN p1.score > p2.score THEN p1.username WHEN p1.score < p2.score THEN p2.username ELSE 'Draw' END AS winner

それは本当にそのシナリオで何を表示したいかによります。

于 2013-02-20T01:26:27.583 に答える