MySQL变量(二十五)
在本教程中,您将学习如何在SQL语句中使用MySQL用户定义的变量。
MySQL用户定义变量简介
有时候,您希望将值从SQL语句传递给另一个SQL语句。为此,您可将该值存储在第一个语句中的MySQL用
在本教程中,您将学习如何在SQL语句中使用MySQL用户定义的变量。 MySQL用户定义变量简介 有时候,您希望将值从SQL语句传递给另一个SQL语句。为此,您可将该值存储在第一个语句中的MySQL用户定义的变量中,并在随后的语句中引用它。 要创建用户定义的变量,请使用格式@variable_name,其中variable_name由字母数字字符组成。 用户自定义变量的最大长度为64个字符(MySQL 5.7.5之前的版本) 用户定义的变量不区分大小写。 这意味着@id和@ID是一样的。 可以将用户定义的变量分配给某些数据类型,例如整数,浮点,小数,字符串或NULL。 由一个客户端定义的用户定义的变量不被其他客户端看到。 换句话说,用户定义的变量是特定于会话的。 注意,用户定义的变量是MySQL特定于SQL标准的扩展。 它们在其他数据库系统中可能不可用。 MySQL变量赋值 有两种方法可以将值分配给用户定义的变量。 第一种方法是使用SET语句如下: SET @variable_name := value; 您可以使用:=或=作为SET语句中的赋值运算符。 例如,该语句将数字100分配给变量@counter。 SET @counter := 100; 为变量分配值的第二种方法是使用SELECT语句。 在这种情况下,您必须使用:=赋值运算符,因为在SELECT语句中,MySQL将=运算符视为相等运算符。 SELECT @variable_name := value; 在赋值之后,可以使用后续语句中允许表达式的变量,例如,在WHERE子句,INSERT或UPDATE语句中。 MySQL变量示例 以下语句在products表中查询获得最昂贵的产品,并将价格分配给用户定义的变量@msrp: SELECT @msrp:=MAX(msrp) FROM products; 执行上面查询语句,得到以下结果 - mysql> SELECT @msrp:=MAX(msrp) FROM products; +------------------+ | @msrp:=MAX(msrp) | +------------------+ | 214.30 | +------------------+ 1 row in set mysql> select @msrp as max_price ; +-----------+ | max_price | +-----------+ | 214.30 | +-----------+ 1 row in set 以下语句使用@msrp变量来查询最昂贵产品的信息。 SELECT productCode, productName, productLine, msrp FROM products WHERE msrp = @msrp; 有时候,您想要在表中插入一行mssql 运算符,获取最后一个插入ID,并使用将此ID作一项数据插入另一个表。 在这种情况下,您可以使用用户定义的变量来存储AUTO_INCREMENT列生成的最新ID,如下所示。 SELECT @id:=LAST_INSERT_ID(); 用户定义的变量只能保存一个值。 如果SELECT语句返回多个值,则变量将获取结果中最后一行的值。 SELECT @buyPrice:=buyprice FROM products WHERE buyprice > 95 ORDER BY buyprice; 执行上面语句,得到以下结果 - +---------------------+ | @buyPrice:=buyprice | +---------------------+ | 95.34 | | 95.59 | | 98.30 | | 98.58 | | 101.51 | | 103.42 | +---------------------+ 6 rows in set 接下来,查询上面变量(@buyprice)的值,结果如下所示 - mysql> SELECT @buyprice; +-----------+ | @buyprice | +-----------+ | 103.42 | +-----------+ 1 row in set 在本教程中,我们向您展示了如何使用SQL语句中的MySQL变量在会话内的语句之间传递数据。 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |