mysql 排序,利用变量实现 显示排序序号_mysql按某字段排序并显示序号-程序员宅基地

技术标签: 数据库_MySQL  mysql  数据库  sql  

:= 与 = 的区别:

1 。 “ := ” 赋值的意思 。 set 和 update 时, 但是一般都用 “ = ” 。 select 时 只能使用“ := ”方式
2.。“ = ” set 和 update时 ,表示赋值。select 时 , 表示是判断。

--  @i 是对一个叫 i 的参数进行赋值。
-- 按分数进行排序,并显示排名
set @i = 0;
select 
student_id as 学生id,
score as 分数,
@i := @i + 1 as 排名序号
from tb_score order by score
-- 按分数进行排序,并显示排名, Score重复时合并名次
-- 变量i(序号) 和 变量sco(分数)
-- 方法一:
set @i = 0;
set @sco = null;
select 
student_id,
score,
case when @sco = score then @i 
	 when @sco := score then @i := @i + 1 end as 排名序号
from tb_score  ORDER BY score desc

-- 方法二:
set @i = 0;
set @sco = null;
select 
student_id,
score,
case when @sco = score then @i else @i := @i + 1 end as 排名序号,
@sco := score
from tb_score where course_id = 1 ORDER BY score desc

-- 按分数进行排序,并显示排名,Score 重复时保留名次空缺
set @i = 0;
set @sco = null;
select 
student_id,
score,
case when @sco = score then '' else @i := @i + 1 end as 排名序号,
@sco := score
from tb_score where course_id = 1 ORDER BY score desc
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_55806809/article/details/122931550

智能推荐

未来人工智能对人类的影响的利弊_人工智能对人类的危害-程序员宅基地

人工智能将会是21世纪以来人类最伟大的发明之一。新一次的工业革命会不会是人工智能我们还未知晓,它给我们带来了许多便利。霍金曾经警告过我们,我们未来最大的威胁就是外星人和人工智能。根据霍金的说法,人工智能技术在发展的最初阶段确实为人类生活带来了便利,但机器可能会以不断加快的速度重新设计自己。然而,人类却受制于生物进化的速度,无法与之竞争,最终超越了它。霍金在讲话中重申,人工智能的兴起,不是人类的..._人工智能对人类的危害

php之从二维数组中根据键和值获取符合的数据数据_php二维数组根据元素提取数据-程序员宅基地

/** * 在二维数组中,根据键和值获取所有符合的数据 * @param array $array [description] * @param string $key [description] * @param string $value [description] * @return [type] [description] */function search_two_dimensional_array_list_data(array $array, strin_php二维数组根据元素提取数据

java 集合之HashMap、Hashtable、LinkedHashMap、TreeMap-程序员宅基地

HashMap实现了Map接口,线程不安全。实现原理:HashMap由数组+链表组成,数组是HashMap的主体,链表则是主要为了解决哈希冲突而存在的。如果通过hash定位到数组位置没有链表,则查找、添加速度很快。否则,就要解决hash冲突,操作链表。遍历链表时,通过key对象的equals方法逐一比对。构造hashmap的时候有两个参数,initialCapacity初始..._hashmap,treemap,hashtable,linkedhashmap

腾讯2020校园招聘-后台,[编程题]压缩算法_腾讯2020校招编程_deverli的快乐时光没有了的博客-程序员宅基地

解题思路:通过对[进行入栈,对]进行出栈的思路进行解题。同时创建了一个节点类,包含k和v两个属性,分别用来存储一组中括号中的数字与字符内容,出栈时通过这两个参数计算出解压的字符串。package org.example.algorithm;import java.util.Scanner;import java.util.Stack;/** * TODO 压缩算法 * 输入第一行包含一个字符串s,代表压缩后的字符串。 * S的长度<=1000; * S仅包含大写字母、[、]、|;._腾讯2020校招编程

2-pandas数据(Series, DataFrame)介绍及使用-程序员宅基地

tags: python,数据分析,pandas,numpy,Series,DataFrame目录文章目录目录`Pandas`的数据结构`Series`:`DataFrame`:`Series``Series`的创建由列表或`numpy`数组创建由字典创建`Series`的索引和切片显式索引:隐式索引`Series`的基本概念`Series`的运算`DataFrame``DataFrame...

自定义Odoo的界面样式-程序员宅基地

自定义Odoo的界面样式,最容易想到的办法就是找到相应的css文件进行修改,但这种方式太丑陋,不推荐。更优雅的的办法是自定义一个模块来个性化风格。下面以安装在centos上的GreenOdoo为例简单描述一下过程。第一步:创建自定义模块:在source目录下执行../runtime/python/bin/python odoo.py scaffold mytheme myaddons创建一个名..._odoo 自定义界面

随便推点

sublime text3 最新版激活码及使用技巧相关汇总-程序员宅基地

官方下载网站https://www.sublimetext.com/3激活码https://blog.csdn.net/qq_29819449/article/details/80130327插件https://www.cnblogs.com/softwarefang/p/6094757.html汉化https://jingyan.baidu.com/article/1...

Jenkins参数化构建插件,实现构建前输入自定义参数-程序员宅基地

插件:【Build with Parameters】:https://wiki.jenkins-ci.org/display/JENKINS/Build+With+Parameters+Plugin【Extended Choice Parameter】:https://wiki.jenkins-ci.org/display/JENKINS/Extended+Choice+Para..._构建之前 设置 参数的数值

笔记本安装win10后 无线网卡驱动无法安装 问题的解决_a1466网卡驱动win10-程序员宅基地

打开C:\Windows\System32\DriverStore\FileRepository 搜索netrtwlane.inf_amd64 删除这个文件夹 然后在设备管理器里卸载无线网卡驱动 然后扫描硬件驱动 如果能用就可以了 还是色不能用就自己手动安装驱动即可 本人亲测成功_a1466网卡驱动win10

Android 高德地图No implementation found for long com.autonavi.amap.mapcore.MapCore-程序员宅基地

此篇博客最后更新时间写自2016.5.18。当下高德地图jar版本为3.3.1。使用高德地图碰到此问题,纠结许久(接近4个多小时)。记录在此,希望遇到相同问题的读者可以有所借鉴。错误截图:导致问题的原因主要有两种:1、so文件操作不当问题。可能是so文件与jar不匹配,也可能是so文件未导入。解决办法:下载与jar相匹配的jar。sdk下载网址:http://lbs...

tcpdump抓两个网卡的包_软路由 tcpdump抓包详解: 网口详解、抓包详解、多网卡同时抓包...-程序员宅基地

软路由详解:我的软路由有四张千兆网卡。其中Eth3是WAN口,Eth012是三个LAN口,Eth0接网线连接一台PC,Eth1连接一台无线路由器,Eth2未使用。进入软路由系统中用ifconfig 命令查看(回环地址省略):(这边dropped是路由器丢弃的包,overruns的是内存不够丢弃的包)可以看到有eth0、eth1、eth2、eth3三张网卡Br-lan是网卡桥接,把eth0、eth1..._tcpdump一条指令抓两个网卡

cb的一些小技巧-程序员宅基地

1、替换Alt+N Rename SymbolCtrl+R Replace第一种可以替换所有相同的变量名【函数好像也可以第二种是纯粹的文本替换2、实用的替换情景:你想改变一个变量的名称,而你就不得不修改一个一个修改所有这个的变量名,怎么办.....当然上面那种好像也可以,但是你又不想修改所有的变量名【真是奇怪的需求呢】,肿么办?快捷键 CTAL + E;Step 1 :选择一个你想修改的字符串。S...