创建用户定义的变量,请使用格式@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