【源计划——编程技术进阶宝典】MySQL数据库distinct关键字的神奇打开方式

序言

需求

今天源哥在开发中遇到了一个问题,需求如下:

  1. 有三位评委对三位选手进行打分并排名
  2. 如果三位选手的总分相同,则需要根据评委的最高分进行排名
  3. 如果最高分的个数相同,则比较第二高的分数,依次类推

乍一看,好像需求很简单,但是如果拿出每位选手的分数轮询比较,复杂度过高。而且如果以后存在多位分数相同的选手,轮询的方法效率更是低,于是我尝试在数据库层面就解决该问题。
在这里插入图片描述

经过我的反复分析,终于想出了一个我认为比较靠谱的方法
在这里插入图片描述
首先根据每位评委对选手的打分情况,找出总分相同的选手,为了方便各位读者的阅读,我直接做了几条测试数据,如图:
在这里插入图片描述

三位选手的总分,都是17分,意味着这三位选手将要根据最高得分数和最高分的数量进行较量

解题思路

源哥的设想是,根据每位选手的得分以及相同得分数量进行排序,然后再使用distinct关键字进行去重,说干就干,于是源哥得出了以下结果:

  • 根据每位选手的得分以及相同得分数量进行排序

在这里插入图片描述

  • 使用distinct关键字进行去重

在这里插入图片描述
此时可以看到,使用MySQL的distinct关键字进行去重后,得到了我们想要的结果,我们的本次分享也完美结束,源哥也应该为此奖励自己一把英雄联盟了!

如果你认为源哥的解决思路不能让你满意,或者你有更好的解决方式,请在评论区进行评论吧

我是源哥,各位看官的点赞关注收藏,就是对我的最大支持!感谢!
在这里插入图片描述

  • 22
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值