2013-02-20 52 views
1

我有两个表。
player1有用户名,分数,game_id,...
player2有行用户名,分数,game_id ...
你如何选择同一个game_id最大分数的用户名?sql [db2] select condition with condition

我有什么是
选择player1.username殊荣,player1.points,player1.game_id从PLAYER1内部联接上player1.game_id player2 = player2.game_id其中player1.points> player2.points


选择player2.username殊荣,player2.points,player2.game_id从PLAYER1内部联接上player1.game_id player2 = player2.game_id其中player2.points> player1.points

回答

3

这应做到:

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 

这真的取决于你想,要显示什么场景。

+2

你也可以改进CASE表达式,这样如果分数相等,你可以返回一些信息告诉你 – 2013-02-20 01:28:04