回答

收藏

sql显示基于mysql的计算列的分区

技术问答 技术问答 217 人阅读 | 0 人回复 | 2023-09-12

假设我们有这种关系:
- ^9 J" Q2 ]1 E; F, }" t8 M
    ╔═══════════════════╗║ i   name  score   ║╠═══════════════════╣║ 1   Will 123          ║║ 2   Joe   100                                                               ║║ 3   Bill        ║║ 4   Max                                                                                                                                 ║║ 5   Jan   433                                                    ║║ 6   Susi  42                                                             ║║ 7   Chris 11      ║║ 8   Noa                                                                                                                                                                                                                                ║║ 9   Sisi  4                                                             ║╚═══════════════════╝
    ( n* ^* _4 p" K, R
现在我需要一个基于我正在搜索的数据的子集。例如,我正在寻找第五个地方。在我的结果中,我不仅需要 Jan 记录,我还需要 Jan  前两个记录和 Jan 以下两个记录。因此,我有以下结果集:: o, H' \5 c% o9 j+ \, a$ X1 F
    ╔═══════════════════╗║ id   name score   ║╠═══════════════════╣║ 3   Bill        ║║ 4   Max                                                                                                                                 ║║ 5   Jan   433                                                    ║║ 6   Susi  42                                                             ║║ 7   Chris      ║╚═══════════════════╝# ]/ ~6 {& C/ O6 y* x
那是我得到的sql:' G  I0 B7 _* d' C7 B
    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;- K! e8 y) G  }7 H  `" R
这里的问题是,@a是id记录。有没有办法使用计算值?@i:=@i 1?: r2 ~. q* E0 E6 R+ ~
非常感谢您的帮助。
. P; l5 J( w! G                                                                0 p. d, M4 |, k+ @# H2 K
    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则