MySQL 变量

本文详细介绍了如何在MySQL 5.7.5及以上版本中创建、赋值和使用用户定义变量,包括SET语句与SELECT语句的区别,以及变量长度限制和不区分大小写的特性。通过实例演示了如何获取表中最大值并应用到查询中。
摘要由CSDN通过智能技术生成

创建用户定义的变量,请使用格式@variable_name,其中variable_name包含字母数字字符。从MySQL 5.7.5开始,用户定义变量的最大长度为64个字符

用户定义的变量不区分大小写。这意味着@id和@ID是一样的

赋值

方式1
SET

SET @variable_name := value;
# or
SET @variable_name = value;
SET @num = 2;
SELECT @num as test;

在这里插入图片描述

方式2
SELECT语句
在这种情况下,必须使用 := 赋值运算符,因为在SELECT语句中,MySQL将=运算符视为等于运算符

SELECT @variable_name := value; 
SELECT @num := 100 as test;

在这里插入图片描述

赋值之后,可以在允许表达式的后续语句中使用变量,例如,在WHERE子句,INSERT或UPDATE语句

举例

Logs 表:
+----+-----+
| Id | Num |
+----+-----+
| 11  | 1   |
| 21  | 1   |
| 31  | 1   |
| 41  | 2   |
| 51  | 1   |
| 61  | 2   |
| 71  | 2   |
+----+-----+

获取表中最大的num并赋值@max

SELECT 
	@max := MAX(num)
from logs

在这里插入图片描述

根据@max筛选数据
@max 存储在临时表,关联查找最大值对应的行数据

SELECT 
	id, num
from 
	logs, (SELECT @max := MAX(num) from logs) t
WHERE num = @max

在这里插入图片描述

用户定义的变量只能包含单个值。如果SELECT语句返回多个值,则变量将采用结果中最后一行的值

SELECT 
	@max := num 
from logs 
WHERE num > 0

在这里插入图片描述

@max只能获取最后一行的数值

SELECT
	@max
FROM
	(SELECT @max := num from logs WHERE num > 0) t

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值