前言
- 有时我们需要导出成绩单,并按分数由高到底进行排序,并展示排名,这里就需要自定义变量,如图所示:
- 有时我们在数据库中通过好几张表查找数据时,每张表的信息都要展示出来,这样就需要一个共有变量
这里就需要自定义变量。
mysql自定义变量
语法:SET @var_name = expr [, @var_name = expr] ...
对于SET,可以使用=
或 :=
作为分配符。分配给每个变量的expr可以为整数、实数、字符串或者NULL值。
也可以用select语句
代替SET
来为用户变量分配一个值。在这种情况下,分配符必须为:=
而不能用=
,因为在非SET语句中=被视为一个比较 操作符:
set @i1=1,@i2=2,@i3=3;
SELECT @i1,@i2,@i3,@i4:=@i1+@i3;
自定义变量显示行号
SELECT
(@i:=@i+1) AS 排名,
tst. NAME AS 姓名,
tst. NO AS 学号,
tco. NAME AS 课程,
tsc.score AS 分数
FROM
(SELECT @i := 0) as tmp,tb_score tsc
LEFT JOIN tb_student tst ON tst.id = tsc.student_id
LEFT JOIN tb_course tco ON tco.id = tsc.course_id
WHERE tco.id = 2
ORDER BY tco.id ASC,tsc.score DESC
自定义变量简化查询
SELECT *,@memberId :=id from core_member WHERE mobile= '12121212';
SELECT * from ccs_open_account WHERE member_id = @memberId AND is_deleted = 0;
SELECT * FROM ccs_account WHERE member_id = @memberId AND is_deleted = 0;
自定义变量赋值
set @i1=1,@i2=2,@i3=3;
SELECT @i1,@i2,@i3,@i4:=@i1+@i3;