您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

如果您不需要输出中的排名(并且它在您的评论和喜欢的答案中显示出来,而您并不需要),则可以简单地组合最接近Jan得分的测验得分:

查询此处为SQL Fiddle):

-- XXX this assumes `scores`.`username` is UNIQUE !
SELECT * FROM (
    -- Get those who scored worse (or tied)
    (    SELECT s.*
           FROM scores s
     CROSS JOIN (SELECT score FROM scores WHERE username = 'Jan') ref
          WHERE s.score <= ref.score AND username <> 'Jan'
       ORDER BY s.score DESC
          LIMIT 2)
    UNION
    -- Get our reference point record
    (SELECT s.* FROM scores s WHERE username = 'Jan')
    UNION
    -- Get those who scored better
    (    SELECT s.*
           FROM scores s
     CROSS JOIN (SELECT score FROM scores WHERE username = 'Jan') ref
          WHERE s.score > ref.score AND username <> 'Jan'
       ORDER BY s.score ASC
          LIMIT 2)
) slice
ORDER BY score ASC;

(请注意,由于示例数据集太小,我将结果限制为1月之前的两个记录和1月之后的两个记录。)

为了使LIMIT和UNION可以一起使用,需要在上面的组成查询加上这些括号。然后,最外面的查询使我们可以对UNION的结果进行ORDER排序。

MySQL 2022/1/1 18:52:57 有383人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶