本文翻译自:How to declare a variable in MySQL?

How to declare a variable in mysql, so that my second query can use it? 如何在mysql中声明变量,以便第二个查询可以使用它?

I would like to write something like: 我想写一些像:

SET start = 1;
SET finish = 10;SELECT * FROM places WHERE place BETWEEN start AND finish;

#1楼

参考:https://stackoom.com/question/nJxF/如何在MySQL中声明变量


#2楼

There are mainly three types of variables in MySQL: MySQL中主要有三种类型的变量:

  1. User-defined variables (prefixed with @ ): 用户定义的变量 (以@开头):

    You can access any user-defined variable without declaring it or initializing it. 您可以访问任何用户定义的变量,而无需对其进行声明或初始化。 If you refer to a variable that has not been initialized, it has a value of NULL and a type of string. 如果引用的变量尚未初始化,则其值为NULL和字符串类型。

     SELECT @var_any_var_name 

    You can initialize a variable using SET or SELECT statement: 您可以使用SETSELECT语句初始化变量:

     SET @start = 1, @finish = 10; 

    or 要么

     SELECT @start := 1, @finish := 10; SELECT * FROM places WHERE place BETWEEN @start AND @finish; 

    User variables can be assigned a value from a limited set of data types: integer, decimal, floating-point, binary or nonbinary string, or NULL value. 可以从一组有限的数据类型中为用户变量分配一个值:整数,十进制,浮点数,二进制或非二进制字符串或NULL值。

    User-defined variables are session-specific. 用户定义的变量是特定于会话的。 That is, a user variable defined by one client cannot be seen or used by other clients. 即,一个客户端定义的用户变量不能被其他客户端看到或使用。

    They can be used in SELECT queries using Advanced MySQL user variable techniques . 可以使用高级MySQL用户变量技术在SELECT查询中使用它们。

  2. Local Variables (no prefix) : 局部变量 (无前缀):

    Local variables needs to be declared using DECLARE before accessing it. 访问之前,需要使用DECLARE声明局部变量。

    They can be used as local variables and the input parameters inside a stored procedure: 它们可用作存储过程内的局部变量和输入参数:

     DELIMITER // CREATE PROCEDURE sp_test(var1 INT) BEGIN DECLARE start INT unsigned DEFAULT 1; DECLARE finish INT unsigned DEFAULT 10; SELECT var1, start, finish; SELECT * FROM places WHERE place BETWEEN start AND finish; END; // DELIMITER ; CALL sp_test(5); 

    If the DEFAULT clause is missing, the initial value is NULL . 如果缺少DEFAULT子句,则初始值为NULL

    The scope of a local variable is the BEGIN ... END block within which it is declared. 局部变量的范围是在其内声明的BEGIN ... END块。

  3. Server System Variables (prefixed with @@ ): 服务器系统变量 (以@@前缀):

    The MySQL server maintains many system variables configured to a default value. MySQL服务器维护许多配置为默认值的系统变量 。 They can be of type GLOBAL , SESSION or BOTH . 它们的类型可以是GLOBALSESSIONBOTH

    Global variables affect the overall operation of the server whereas session variables affect its operation for individual client connections. 全局变量影响服务器的整体操作,而会话变量影响单个客户端连接的服务器操作。

    To see the current values used by a running server, use the SHOW VARIABLES statement or SELECT @@var_name . 要查看正在运行的服务器使用的当前值,请使用SHOW VARIABLES语句或SELECT @@var_name

     SHOW VARIABLES LIKE '%wait_timeout%'; SELECT @@sort_buffer_size; 

    They can be set at server startup using options on the command line or in an option file. 可以在服务器启动时使用命令行或选项文件中的选项来设置它们。 Most of them can be changed dynamically while the server is running using SET GLOBAL or SET SESSION : 当服务器使用SET GLOBALSET SESSION运行时,大多数可以动态更改:

     -- Syntax to Set value to a Global variable: SET GLOBAL sort_buffer_size=1000000; SET @@global.sort_buffer_size=1000000; -- Syntax to Set value to a Session variable: SET sort_buffer_size=1000000; SET SESSION sort_buffer_size=1000000; SET @@sort_buffer_size=1000000; SET @@local.sort_buffer_size=10000; 

#3楼

Use set or select 使用设置或选择

SET @counter := 100;
SELECT @variable_name := value;

example : 例如:

SELECT @price := MAX(product.price)
FROM product

#4楼

SET

SET @var_name = value

OR 要么

SET @var := value

both operators = and := are accepted 运算符=和:=都被接受


SELECT 选择

SELECT col1, @var_name := col2 from tb_name WHERE "conditon";

if multiple record sets found only the last value in col2 is keep (override); 如果发现多个记录集,则仅col2中的最后一个值是keep(覆盖);

SELECT col1, col2 INTO @var_name, col3 FROM .....

in this case the result of select is not containing col2 values 在这种情况下,select的结果不包含col2值


#5楼

For any person using @variable in concat_ws function to get concatenated values, don't forget to reinitialize it with empty value. 对于在concat_ws函数中使用@variable来获取串联值的任何人,请不要忘记使用空值重新初始化它。 Otherwise it can use old value for same session. 否则,它可以将旧值用于同一会话。

Set @Ids = '';select @Ids := concat_ws(',',@Ids,tbl.Id),tbl.Col1,...
from mytable tbl;

#6楼

SET Value 设定值

 declare Regione int;   set Regione=(select  id from userswhere id=1) ;select Regione ;

如何在MySQL中声明变量?相关推荐

  1. python中声明变量注意事项_我们如何在Python中声明变量?

    简短的答案是,无需在Python中声明变量. 以下是更详细的描述. 静态类型语言(C,C ++,Java,C#)要求在程序中使用变量之前,必须先声明要使用的变量的名称和类型声明.相应的语言编译器确保将 ...

  2. postgres 显示变量_sql - 如何在PostgreSQL查询中声明变量

    sql - 如何在PostgreSQL查询中声明变量 如何声明变量以用于PostgreSQL 8.3查询? 在MS SQL Server中,我可以这样做: DECLARE @myvar INT SET ...

  3. 如何在mysql中创建过程_如何在MySQL 中创建存储过程?

    问题阐述 自MySQL 5.0 开始,MySQL 就支持存储过程.存储过程是一些被用户定义的SQL 语句集合.一个存储程序是可以被存储在服务器中的一套SQL 语句.存储过程可以被程序.触发器或另一个存 ...

  4. 如何在Python中声明一个数组?

    如何在Python中声明数组? 我在文档中找不到任何对数组的引用. #1楼 这个怎么样... >>> a = range(12) >>> a [0, 1, 2, 3 ...

  5. python中变量名有哪些_Python变量范围有哪些?如何在Python中定义变量?

    Python变量范围有哪些?如何在Python中定义变量?在Python编程语言中,变量的范围是该变量可见或可访问的那段代码.更准确地说,不是每个程序的每个部分都可以访问所有变量.而且,有时范围也是持 ...

  6. 中set无效是怎么回事_一起认识下,那些我们应该知道的mysql中的变量知识点

    前言: 这篇文章主要是认识一下mysql中的变量,本来是不准备整理的,但是发现后面的存储过程等等在实际用的时候还挺多. mysql里面的变量你可以和java中的变量进行对比理解.主要分为两种:系统变量 ...

  7. mysql怎么插入时间_如何在MySQL中插入日期?

    在MySQL中插入日期的方法:首先打开脚本文件:然后通过[INSERT INTO tablename (col_name, col_date) VALUE ('DATE: Auto CURDATE() ...

  8. mysql data ibdata1_database - 如何在MySQL中收缩/清除ibdata1文件

    database - 如何在MySQL中收缩/清除ibdata1文件 我在localhost中使用MySQL作为在R中执行统计的"查询工具",也就是说,每次运行R脚本时,我创建一个 ...

  9. mysql count 返回0_如何在MySQL中使用COUNT時返回0而不是null

    我正在使用此查詢返回存儲在$ sTable中的歌曲列表以及存儲在$ sTable2中的總項目的COUNT.如何在MySQL中使用COUNT時返回0而不是null /* * SQL queries * ...

最新文章

  1. oracle怎么小数中多余的零,关于小数中0的处理
  2. 地牢房间迷宫走廊生成(二),Python实现洪水法、完美迷宫
  3. 智能设备逆向工程之外部Flash读取与分析篇
  4. 开发中常用到的通用 scss 模块
  5. 1小时学会JQuery
  6. linux中利用shell脚本条件执行linux命令
  7. MPAndroidChart 2.15使用记录
  8. 蓝桥杯题目练习 提升篇 [蓝桥杯2018初赛]三体攻击
  9. 【Java】JavaSocket编程开发聊天室-服务器端部分
  10. windows系统gaussian和GaussView的安装
  11. HCIA物联网初级考试-第二章物联网常用的通信技术
  12. 磁共振线圈分类_磁共振线圈(二)
  13. 浙江大学计算机专业介绍,浙江大学计算机科学与技术专业课程设置
  14. (转)原始图像数据和PDF中的图像数据
  15. 全排列的java算法_全排列算法原理和实现
  16. Palindromic Tree——回文树【处理一类回文串问题的强力工具】
  17. java向文件写数据的3种方式
  18. java设计模式--装饰器模式
  19. 世界多国尝试弃用美元 滥用霸权、转嫁危机恐将自食其果
  20. WinDbg+WMware+Vista

热门文章

  1. 有了我的第一个留言,高兴
  2. Android 微信支付步骤
  3. 同步和异步的区别和联系以及一般在什么情况下使用它们
  4. sorry for yesterday
  5. 小花梨的三角形(暴力上下扫三角形)
  6. ORA-20011 ORA-29913 KUP-11024 GATHER_TABLE_STATS
  7. Struts2标签库常用标签(转)
  8. Java面试题基础知识(收集)
  9. php循环语句for while do while的用法
  10. Bootstrap部分---环境安装及一个可视化的布局;