MySql中@符号的使用(@i)
@
符号的作用
@
后接变量名,用以定义一个变量,该变量的有效期为语句级,即再一次执行中始终有效.
select @a;
变量名,如果你不加的话,会认为这是一个列名,但是这列不存在,就报错了;
@变量名
: 定义一个用户变量.=
对该用户变量进行赋值.
用户变量赋值有两种方式: 一种是直接用=
号,另一种是用:=
号。
其区别在于:
- 使用
set
命令对用户变量进行赋值时,两种方式都可以使用; - 用
select
语句时,只能用:=
方式,因为select
语句中,=
号被看作是比较操作符。
1 创建常量,起别名a
select @l := 0 a
2 增加临时表,实现变量的自增 @i:=@i+1
@i:=@i+1
可以在生成查询结果表的时候生成一组递增的序列号
SELECT (@i:=@i+1),t.* FROM table_name t,(SELECT @i:=0) AS j
(@i:=@i+1)代表定义一个变量,每次叠加1;
(SELECT @i:=0) AS j 代表建立一个临时表,j是随便取的表名,但别名一定要的。
3 实现排序递增
SELECT
( @i := @i + 1 ),
p.*
FROM
( SELECT * FROM sys_region ORDER BY create_time DESC ) p, ( SELECT @i := 0 ) k
也可以依据表字段实现递增
4 实现分组递增
SELECT
@r := CASE WHEN @type = a.LEVEL THEN
@r + 1
ELSE
1
END AS rowNum,
@type := a.`level` AS type,
a.id
FROM
sys_region a,( SELECT @r := 0, @type := '' ) b;
level
代表等级,如果等级相同,则rownum
自增+1,这种格式的sql
具体是如何使用的.
这里用了临时变量@type,因为对临时变量操作的时候,被使用的变量都是临时变量。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)