这是一个有点复杂的查询,但我有一个斯诺克比赛数据库,并且正在尝试生成谁打过并赢得了最多决定性帧的统计数据(如果您不了解比赛,请不要担心规则)。
桌子:
ID player1 player2 bestOf player1Score player2Score
1 1 2 9 5 0
2 2 1 9 5 4
3 1 2 9 5 4
4 2 1 9 4 5
我想要做的是如下所示:
SELECT COUNT(*) AS played, DISTINCT(player1,player2) AS playerID
FROM matches
WHERE (player1Score=BestOf / 2 + 0.5 AND player2Score=BestOf / 2 - 0.5)
GROUP BY playerID
上面的查询不起作用,因为我相信 DISTINCT 不支持多列。我从上表中寻找的结果是:
playerID played won
1 3 2
2 3 1
表中的第一行不显示,因为它不是最后一帧。
我尝试了各种变化,例如:
SELECT GROUP(player1,player2)
SELECT player1 + player2 AS playerID, select DISTINCT(playerID)
SELECT (player1 + player2) AS playerID GROUP BY playerID
和其他几个。任何提示将不胜感激!