首页 > 数据库 >MySQL给查询出的数据增加序号

MySQL给查询出的数据增加序号

时间:2023-06-22 18:56:32浏览次数:50  
标签:变量 MySQL 查询 sid 序号 SELECT


前言

我们都知道,在Oracle中,可以使用ROW_NUMBER() OVER()函数 给查询的结果加序号。
不了解请点击:ROW_NUMBER() OVER()

MySQL 几乎模拟了 Oracle,SQL Server等商业数据库的大部分功能,函数。

MySQL8.0版本以后才会有这个函数,之前版本是没有的

MySQL 给查出的数据加序号的方法

一种普遍的解决方法是:通过 定义用户变量 生成序号

举例:假设数据库有 student
表中有字段:sid,sname,gender,age

查询表中的数据并加上序号,对应的SQL为:

SELECT sid,sname,gender,age,(@i:=@i+1) AS '序号' 
FROM student,(SELECT @i:=0) AS itable;

或者

SET @i=0;
SELECT sid,sname,gender,age,@i:=@i+1 AS '序号' 
FROM student;

查询结果如图所示:
image-20221227120115257

解释说明:
1、(@i:=@i+1) 也可以写成 @i:=@i+1 ,加括号是为了视觉上更清晰。
它代表的意思是:变量i 加1 赋值给变量i,在定义好一个变量后每次查询都会给这个变量自增,每次执行查询语句获取结果后就不需要这个变量自增了
2、(SELECT @i:=0) AS itable,定义用户变量i,设置初始值为0,然后将它作为派生表使用,AS定义了表的别名。
3、SET @i=0 。定义用户变量i,赋初值为0,

相关知识点:
1、MySQL定义用户变量的方式:select @变量名 ,上面的SQL语句中,变量的名字是 i
2、用户变量赋值:一种是直接用"="号另一种是用":="号
=:= 的区别:
使用set命令对用户变量进行赋值时,两种方式都可以使用,
即:SET @变量名=xxx 或 SET @变量名:=xxx

使用select语句对用户变量进行赋值时,只能使用":=“方式,因为在select语句中,”="号被看作是比较操作符。即:SELECT @变量名:=xxx

①:用户变量
②:派生表
③:AS设置别名

用Oracle的写法是:

SELECT "sid","sname","gender","age",
ROW_NUMBER() over(order by "sid") AS "序号"
FROM "user";

标签:变量,MySQL,查询,sid,序号,SELECT
From: https://www.cnblogs.com/javaxubo/p/17498141.html

相关文章

  • MySQL处理字符串的两个绝招:substring_index,concat
    1、substring_index(str,delim,count)str:要处理的字符串delim:分隔符***count:计数***例子:str=www.google.comsubstring_index(str,'.',1)结果是:wwwsubstring_index(str,'.',2)结果是:www.google也就是说,如果count是正数,那么就是从左往右数,第N个分隔符的左边的全部内容......
  • APScheduler+MySQL实现定时任务及其持久化存储
    APScheduler+MySQL实现定时任务及其持久化存储转自:APScheduler+MySQL实现定时任务及其持久化存储-简书(jianshu.com)最近,想要实现一个功能,就是添加定时任务的同时记录其任务信息到数据库中,可以通过接口查看设定了哪些定时任务,经过调研,发现大家公认的Python最好用的定时任务框......
  • mysql允许其他电脑访问,授权mysql允许其他电脑访问
    1关闭windows防火墙,或者添加入站规则允许mysql的端口(默认3306)2授权mysql允许其他电脑访问mysql-uroot-pusemysql;selecthost,userfromuser;updateusersethost='%'whereuser='root';flushprivileges;https://blog.csdn.net/liu53782/article/de......
  • Mysql数据库简介
    由于之前文章已经初步了解过数据库的概念此处就不过多赘述了,直接进入本次主题,此次要介绍的是Mysql数据库,与之前介绍的Oracle数据库相比属于中型数据库,远远小于Oracle的容量体积(从软件的安装包大小就可看出),一个只要几百MB,一个却要好几个G。虽然安全性不如Oracle好,但Mysql相比Oracle......
  • MYSQL 8 上云 performance_schema 里面参数我们打开了那些 5个表调整脚本?(POLARDB
    关于监控如果上云后,到底还需要自行进行监控吗,是一个问题,是否把所有的数据库监控都放到云上,通过云来获取数据库的信息是一个问题。首先回答是否定的,1  云的数据库监控的数据,部分也是通过数据库中的系统的表中获得的2 云的监控数据的需要进行处理加工,处理加工的方式对不对,这也是......
  • .Net 查询日志的几个位置
    日志类型存放位置实现方式说明请求日志一般以结构化数据存储在数据库中,字段是开发者自己定义,一般有关键字段例如请求地址、时间、耗时、参数、返回值等等通过Filter过滤器实现,手动的记录手动Log日志网站目录或者其它存储位置,根据开发者配置来就是.netcore的I......
  • Android—MySQLiteOpenHelper源码解读
    MySQLiteOpenHelper:直接放上源码,解读在注释里packagecom.esandinfo;importandroid.content.Context;importandroid.database.sqlite.SQLiteDatabase;importandroid.database.sqlite.SQLiteOpenHelper;importandroid.util.Log;publicclassMySQLiteOpenHelperextends......
  • win 安装mysql
    参考MySQL8.0forWindowsv8.0.33官方免费绿色正式版64位在bin目录同级下创建一个文件,命名为my.iniD:\mysql_winx64\mysql-8.0.33-winx64\  下创建data目录编辑my.ini文件,文件内容如下:[mysqld]#设置3306端口port=3306#设置mysql的安装目录---这里输入你安装的......
  • 记一次腾讯云轻量级服务器安装mysql配置完成后,外网无法访问问题
    一、配置信息正常1、防火墙配置通过2、mysql端口正常启动netstat-antlp|grep33063、配置都正常,但是telnet访问不通超时Operationtimedouttelnet124.223.98.2243306Trying124.223.98.224...telnet:connecttoaddress124.223.98.224:Operationtimedouttelne......
  • MySQL败给了PostgreSQL!
    在软件领域,数据库是毫无疑问的中流砥柱。在这片历史悠久、玩家众多的沃土上,流传着着无数技术和商业交织的故事。如今,老一代商业数据库日薄西山,开源数据库步步为营,处在浪潮之巅的我们已然可以看见其中的暗流涌动。在这场群雄逐鹿的戏码里,MySQL与PostgreSQL之争渐趋白热化。MySQL的......