如何在MySQL中为普通查询声明变量?

您可以使用@anyVariablename声明一个会话变量。要创建会话变量,您需要使用SET命令。

语法如下

SET @anyVariableName:=anyValue;

您可以使用DECLARE命令声明局部变量。语法如下

DECLARE yourVariableName datatype

您可以在创建变量时设置默认值。语法如下

DECLARE yourVariableName datatype default ‘yourValue’

这是会话变量的演示。要了解它,让我们创建一个表。

创建表的查询如下

mysql> create table SessionVariableDemo
   -> (
   -> EmployeeId varchar(10),
   -> EmployeeName varchar(30),
   -> EmployeeAge int
   -> );

使用insert命令在表中插入一些记录。查询如下

mysql> insert into SessionVariableDemo values('EMP-101','Carol',30);

mysql> insert into SessionVariableDemo values('EMP-102','John',26);

mysql> insert into SessionVariableDemo values('EMP-103','Bob',25);

mysql> insert into SessionVariableDemo values('EMP-104','Sam',32);

mysql> insert into SessionVariableDemo values('EMP-105','Mike',35);

mysql> insert into SessionVariableDemo values('EMP-106','David',33);

使用select语句显示表中的所有记录。查询如下

mysql> select *from SessionVariableDemo;

以下是输出

+------------+--------------+-------------+
| EmployeeId | EmployeeName | EmployeeAge |
+------------+--------------+-------------+
| EMP-101    | Carol        |          30 |
| EMP-102    | John         |          26 |
| EMP-103    | Bob          |          25 |
| EMP-104    | Sam          |          32 |
| EMP-105    | Mike         |          35 |
| EMP-106    | David        |          33 |
+------------+--------------+-------------+
6 rows in set (0.00 sec)

现在,使用SET命令创建一个会话变量。之后,我们将在查询中使用此变量来获取年龄大于30岁的所有员工记录。

让我们使用SET命令创建一个会话变量

mysql> set @AgeGreaterThan30:=30;

这是将使用会话变量获取年龄大于30岁的员工记录的查询

mysql> select *from SessionVariableDemo where EmployeeAge > @AgeGreaterThan30;

以下是输出

+------------+--------------+-------------+
| EmployeeId | EmployeeName | EmployeeAge |
+------------+--------------+-------------+
| EMP-104    | Sam          |          32 |
| EMP-105    | Mike         |          35 |
| EMP-106    | David        |          33 |
+------------+--------------+-------------+
3 rows in set (0.00 sec)