mysql中如何定义变量

SELECT @myRight := rgt FROM nested_category WHERE name = 'TELEVISIONS';
UPDATE nested_category SET rgt = rgt + 2 WHERE rgt > @myRight;
UPDATE nested_category SET lft = lft + 2 WHERE lft > @myRight;
mysql中能不能实现类似的功能,定义变量,然后再后面的sql语句中使用。谢谢各位了

测试一下, 好像是可行的呀!

mysql> select @test := 1;
+------------+
| @test := 1 |
+------------+
|          1 |
+------------+
1 row in set (0.00 sec)

mysql> select * from test_main;
+----+-------+
| id | value |
+----+-------+
|  1 | ONE   |
|  2 | TWO   |
|  3 | THREE |
+----+-------+
3 rows in set (0.00 sec)

mysql> select * from test_main where id > @test;
+----+-------+
| id | value |
+----+-------+
|  2 | TWO   |
|  3 | THREE |
+----+-------+
2 rows in set (0.00 sec)

温馨提示:内容为网友见解,仅供参考
第1个回答  2020-12-04
一、局部变量
局部变量一般用在sql语句块中,比如存储过程的begin/end。其作用域仅限于该语句块,在该语句块执行完毕后,局部变量就消失了。
局部变量一般用declare来声明,可以使用default来说明默认值。
二、用户变量
用户变量的作用域要比局部变量要广。用户变量可以作用于当前整个连接,但是当当前连接断开后,其所定义的用户变量都会消失。
用户变量使用如下(这里我们无须使用declare关键字进行定义,可以直接这样使用):
select @变量名
对用户变量赋值有两种方式,一种是直接用"="号,另一种是用":="号。其区别在于使用set命令对用户变量进行赋值时,两种方式都可以使用;当使用select语句对用户变量进行赋值时,只能使用":="方式,因为在select语句中,"="号被看作是比较操作符。
第2个回答  2020-11-09
MySQL 变量存在的介质及意义:

MySQL 的变量存在于内存、以及配置文件中;
其中内存中的变量是在运行时生效,配置文件中的变量是在 mysqld 程序启动时加载到内存中;

MySQL 8 版本以前为了保证修改后的变量的值在 MySQL 运行时及 MySQL 重启后生效,此时你需要分别修改内存和配置文件中变量的值:
SET global/session 语句设置内存中全局/当前会话的变量的值,通过 Linux 命令⼿⼯修改配置⽂件中变量的值,此时你会发现,你的配置⽂件需要 通过 ps -ef | grep mysql 查看进程启动命令中带⼊的选项 --defaults-file,以确定配置⽂件,如果启动命令没有带⼊选项 --defaults-file,那么默认配置⽂件为 /etc/my.cnf ;
你会发现修改配置⽂件时,需要确定配置⽂件,以及修改配置⽂件,这个步骤其实蛮繁琐的,⽽且如果你⼀不小心写错了变量名或值,可能会直接导致启动 MySQL 失败,如果此时 你有其他策略依赖 MySQL 的启动/重启,那么这个 MySQL 启动失败可能⼜会导致你策略判断不符合预期,造成其他不好的后果,这可能是就是亚马逊飓风初始的那只蝴蝶的翅膀。

MySQL中变量的创建方法详解mysql中创建变量
SET @str3 = CONCAT(@str1, @str2); \/\/变量@str3的值为’HelloWorld’SET @str4 = SUBSTRING(@str3, 1, 5); \/\/变量@str4的值为’Hello’三、变量的应用场景 变量在MySQL中具有广泛的应用场景,可以用于各种数据处理和计算。以下是一些常见的应用场景:1.数据过滤...

MySQL中的变量定义与赋值
局部变量是作用于特定代码块内的变量,如存储过程中的begin…end块,它们仅在该块内有效,执行完毕后即消失。局部变量的定义和赋值可以通过set或select语句实现,局部变量可以使用default指定默认值。用户变量是作用于整个客户端数据库连接内的变量,它们在连接建立时自动初始化为默认值。用户变量可以不提前声...

MySQL存储过程里怎么定义一个参数类型和表的变量类型一样?
MySQL存储过程中,定义变量有两种方式:  1、使用set或select直接赋值,变量名以@开头,可以在一个会话(即连接)的任何地方声明,作用域是整个会话,称为用户变量。例如:set @var=1;  2、 以declare关键字声明的变量,只能在存储过程中使用,称为存储过程变量,主要用在存储过程中,或者...

MySQL中SQL变量的使用方法mysql中sql变量
在MySQL中可以使用SET语句来为变量赋值,语法如下:SET variablename = value;其中variablename为变量名称,value为变量的值。3.使用变量 在MySQL中可以通过变量名来引用变量,语法如下:SELECT variablename;其中variablename为变量名称。4.示例代码 下面是一些使用MySQL SQL变量的示例代码。4.1.使用变量作为...

MySQL中变量数组的使用方法mysql变量数组
变量数组是MySQL中的一种变量类型,它允许你将多个值存储到一个变量中,从而极大方便了数据库操作。本文将讨论MySQL中变量数组的使用方法。首先,变量数组需要显式声明和创建。MySQL中使用SET语法来声明变量数组,形式如下:SET @变量名称:=(表达式1,表达式2,………);你可以以此方式创建一个 ...

Mysql环境变量的配置(详细图解)
一、安装mysql后,在命令窗口出现错误信息,具体如下:二、在桌面找到“此电脑”图标,右键点击选择“属性”,如图所示:三、进入高级系统设置,点击“环境变量”,如图所示:四、在系统变量下,点击“新建”,如图所示:五、填写变量名和变量值,变量名:MYSQL_HOME,变量值:默认在C盘如下地址:C:\\...

mysql 怎么定义变量
MYSQL 变量定义应该只能在 存储过程, 函数里面定义.不像 Oracle \/ SQL Server , 一个 BEGIN \/ END 里面就可以定义\/执行了。mysql> DELIMITER \/\/ mysql> CREATE PROCEDURE TestWhile()-> BEGIN -> DECLARE v_index INT;-> -> SET v_index = 0;-> -> WHILE v_index < 5 DO -...

MySQL中SET指令的使用规则与作用域详解mysql中set作用域
1. 设置系统变量 使用SET指令可以设置MySQL中的各种系统变量,例如设置字符集、时间格式等。例如,设置全局字符集为utf8:SET GLOBAL character_set_server = ‘utf8’;2. 设置用户变量 用户变量是由用户自定义的变量,可以在当前会话中使用。例如,设置用户变量my_var的值为123:SET @my_...

mysql 定义变量
在PHP、C++等语言里面可以使用变量,在存储过程里面可以使用变量,SQL语句里面不能使用变量的。不过你的要求可以用下面的一个SQL语句实现:insert into YYY表(字段1,字段2,字段3) SELECT 字段1,表达式2,常量3 FROM XXX表 注意:上面是两个表,一般不允许同时对一个表进行操作,如果是一个表,你可以...

mySQL装好需不需要在环境变量里配置,如何配置
1、首先,查找到mysql安装目录,例如:D:\\xampp\\mysql。2、右键“我的电脑”,点击“高级系统设置”,点击“环境变量”按钮。3、点击“新建”按钮,变量名输入:MYSQL_HOME,变量值输入mysql的路径,例如:D:\\xampp\\mysql,点击“确定”。4、之后,打开cmd,即可直接输入数据库连接命令来使用,例如:...

相似回答