假设我们有这种关系:
╔═══════════════════╗
║ i++ name score ║
╠═══════════════════╣
║ 1 Will 123 ║
║ 2 Joe 100 ║
║ 3 Bill 99 ║
║ 4 Max 89 ║
║ 5 Jan 43 ║
║ 6 Susi 42 ║
║ 7 Chris 11 ║
║ 8 Noa 9 ║
║ 9 Sisi 4 ║
╚═══════════════════╝
现在我需要一个基于我正在搜索的数据的子集。例如,我正在寻找合适的地方。在我的结果中,我需要的不仅仅是 Jan 的记录,我还需要 Jan 之前的两条记录和 Jan 之后的两条记录。所以我有以下结果集:
╔═══════════════════╗
║ id++ name score ║
╠═══════════════════╣
║ 3 Bill 99 ║
║ 4 Max 89 ║
║ 5 Jan 43 ║
║ 6 Susi 42 ║
║ 7 Chris 11 ║
╚═══════════════════╝
那是我得到的sql:
select @a:= id from quiz.score where username = 'Jan';
set @i=0;
SELECT @i:=@i+1 as Platz, s.*
FROM quiz.score s where id BETWEEN @a-5 AND @a+5
order by points desc;
这里的问题是@a
记录的问题id
。有没有办法使用计算值@i:=@i+1
?
非常感谢您的帮助。