我在mysql表中有一个列,列出了一个游戏的赢家。
我试图找到一个查询,它将返回每个玩家最长的获胜记录。
或者用php解释查询的方法。
在这种情况下
凯特4号,
第1版,
迈克2,
哈利1号,

**Winner**
Kate
Kate
Ed
Harry
Ed
Harry
Mike
Mike
Ed
Harry
Kate
Kate
Kate
Kate
Ed

提前道歉,因为我对这一切都很陌生。

最佳答案

SELECT winner, MAX(winningStreak) FROM (
SELECT
winner,
IF(winner=@prev, @rownum:=@rownum+1, @rownum:=1) AS winningStreak,
@prev:=winner
FROM
yourTable
, (SELECT @prev:=NULL, @rownum:=1) vars
/*ORDER BY whateverDeterminesTheOrderOfTheWinners*/
)sq
GROUP BY winner
ORDER BY winningStreak DESC

您需要另一列来确定胜利者的顺序,就像您列出了他们一样,并调整查询的outcommented部分。除此之外,这个查询还可以工作,但是在PHP中做起来会更容易。
现场观看here

10-08 04:33