MySQL中@i:=@i+1表达式用法详解

 更新时间:2023年08月05日 11:32:29   作者:Jamie Chyi  
这篇文章主要给大家介绍了关于MySQL中@i:=@i+1表达式用法的相关资料,文中通过实例代码介绍的非常详细,对大家学习或者使用mysql具有一定的参考借鉴价值,需要的朋友可以参考下

在MySQL中,@i:=@i+1是一个非常有用的表达式,用于在查询中生成一个递增的序列号。它可以帮助我们对结果进行编号,或者在需要连续的数字序列时提供便利。

我们先来了解一下MySQL中的用户变量。用户变量是一个用户定义的变量,其以@开头。我们可以在查询中使用用户变量来存储和操作数据。而@i:=@i+1则是利用用户变量实现递增操作的常见方式之一。

假设我们有一个名为"users"的表格,其中包含用户的姓名和ID。我们想为每个用户生成一个递增的序列号,可以使用如下的查询语句:

SELECT @i:=@i+1 AS 序号, name, id
FROM users, (SELECT @i:=0) AS temp

在上述查询中,我们首先声明了一个用户变量@i并将其初始化为0。接下来,我们从"users"表格中选择姓名和ID,并通过@i:=@i+1来生成一个递增的序列号。这个序列号将在查询结果中以"序号"的列名呈现。

需要注意的是,我们在FROM子句中使用了一个子查询(SELECT @i:=0) AS temp来初始化用户变量@i。这是因为MySQL在处理FROM子句时,会按顺序执行子查询和表格之间的连接操作,确保@i的初始值为0。

让我们通过一个具体的例子来演示@i:=@i+1的用法:

假设我们有以下的"users"表格:

+----+-------+
| id | name  |
+----+-------+
| 1  | John  |
| 2  | Alice |
| 3  | Bob   |
+----+-------+

我们可以使用上述的查询语句来生成递增的序列号:

+--------+-------+----+
| 序号   | name  | id |
+--------+-------+----+
|   1    | John  | 1  |
|   2    | Alice | 2  |
|   3    | Bob   | 3  |
+--------+-------+----+

正如你所看到的,通过@i:=@i+1,我们成功地为每个用户生成了一个递增的序列号。

此外,@i:=@i+1是在查询过程中实时计算的,而不是在表格中存储递增的序列号。这意味着每次执行查询时,序列号都会重新计算。如果需要永久存储递增的序列号,可以考虑创建一个自增的列或者使用触发器来实现。

附:几个案例

执行SQL语句: SELECT (@i:=@i+1),t2.phone,t2.name,t2.create_time FROM t_admin_copy_member t2,(SELECT@i:=0)AS j  

执行结果:

2.若加个需求,按日期倒序排

SQL语句变为:SELECT (@i:=@i+1),p.* 2 FROM ( 3 SELECT t2.phone,t2.name,t2.create_time FROM t_admin_copy_member t2 ORDER BY create_time DESC 4 )p,(SELECT@i:=0)k 

执行结果:

总结

到此这篇关于MySQL中@i:=@i+1表达式用法详解的文章就介绍到这了,更多相关MySQL @i:=@i+1用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决MySQL报错:The last packet sent successfully to the server was 0 milliseconds ago.

    解决MySQL报错:The last packet sent successfu

    这篇文章主要介绍了解决MySQL报错:The last packet sent successfully to the server was 0 milliseconds ago问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • 关于skip_name_resolve参数的总结分享

    关于skip_name_resolve参数的总结分享

    下面小编就为大家带来一篇关于skip_name_resolve参数的总结分享。小编觉得挺不错的,现在分享给大家。给大家一个参考。一起跟随小编过来看看吧
    2016-03-03
  • MySQL中的SQL标准语句详解

    MySQL中的SQL标准语句详解

    SQL(Structured Query Language)是“结构化查询语言”,它是对关系型数据库的操作语言。虽然SQL可以用在所有关系型数据库中,但很多数据库还都有标准之后的一些语法,我们可以称之为方言
    2022-09-09
  • MySQL索引失效的几种情况详析

    MySQL索引失效的几种情况详析

    这篇文章主要给大家介绍了关于MySQL索引失效的几种情况,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • MySQL性能突然下降的原因

    MySQL性能突然下降的原因

    这篇文章主要介绍了MySQL性能突然下降的原因,帮助大家更好的了解和维护数据库,感兴趣的朋友可以了解下
    2020-10-10
  • MySQL系列之四 SQL语法

    MySQL系列之四 SQL语法

    SQL是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统,这篇文章主要给大家介绍了SQL语法的相关资料,需要的朋友可以参考下
    2021-07-07
  • Windows系统下MySQL8.0.21安装教程(图文详解)

    Windows系统下MySQL8.0.21安装教程(图文详解)

    这篇文章主要介绍了Windows系统下MySQL8.0.21安装教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • MYSQL字符集设置的方法详解(终端的字符集)

    MYSQL字符集设置的方法详解(终端的字符集)

    这篇文章主要给大家介绍了关于MYSQL字符集设置(终端的字符集)的相关资料,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • MySQL自带慢日志排查慢查询SQL

    MySQL自带慢日志排查慢查询SQL

    昨天有一道笔试题是问mysql慢查询的,总结一下,下面这篇文章主要给大家介绍了关于MySQL如何利用自带慢日志排查慢查询SQL的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • Mysql配置my.ini文件的简单成功版本

    Mysql配置my.ini文件的简单成功版本

    my.ini是MySQL数据库中使用的配置文件,修改这个文件可以达到更新配置的目的,下面这篇文章主要给大家介绍了关于Mysql配置my.ini文件的简单成功版本,需要的朋友可以参考下
    2023-04-04

最新评论