暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL的函数和运算符 - 运算符 - 赋值运算符

数据库杂货铺 2021-06-05
1208
赋值运算符
 
名称
介绍
:=
赋值
=
赋值(作为 SET 语句的一部分,或作为 UPDATE 语句中 SET 子句的一部分)
 
● :=
 
赋值运算符。使运算符左侧的用户变量取其右侧的值。右侧的值可以是字面量、另一个变量,或者生成标量值的任何合法表达式,包括查询结果(前提是该值是标量值)。可以在同一 SET 语句中执行多个赋值。可以在同一语句中执行多个赋值。
 
= 不同 := 运算符从不被解释为比较运算符。这意味着可以在任何有效的 SQL 语句(不仅仅在 SET 语句中)中使用 := 为变量赋值。
 
    mysql> SELECT @var1, @var2;
    -> NULL, NULL
    mysql> SELECT @var1 := 1, @var2;
    -> 1, NULL
    mysql> SELECT @var1, @var2;
    -> 1, NULL
    mysql> SELECT @var1, @var2 := @var1;
    -> 1, 1
    mysql> SELECT @var1, @var2;
    -> 1, 1

    mysql> SELECT @var1:=COUNT(*) FROM t1;
    -> 4
    mysql> SELECT @var1;
    -> 4
    复制
     
    可以在 SELECT 之外的其他语句中使用 := 进行值赋值,例如 UPDATE,如下所示:
     
      mysql> SELECT @var1;
      -> 4
      mysql> SELECT * FROM t1;
      -> 1, 3, 5, 7

      mysql> UPDATE t1 SET c1 = 2 WHERE c1 = @var1:= 1;
      Query OK, 1 row affected (0.00 sec)
      Rows matched: 1 Changed: 1 Warnings: 0

      mysql> SELECT @var1;
      -> 1
      mysql> SELECT * FROM t1;
      -> 2, 3, 5, 7
      复制
       
      虽然也可以使用 := 运算符在单个SQL语句中设置和读取同一变量的值,但不建议这样做。
       
      ● =
       
      此运算符用于在两种情况下执行值赋值,将在下面两段中介绍。
       
      SET 语句中,= 被视为赋值运算符,使运算符左侧的用户变量取其右侧的值(换言之,在 SET 语句中使用时,= 的处理方式与 := 相同)。右侧的值可以是字面量、其他变量或任何产生标量值的合法表达式,包括查询的结果(前提是该值是标量值)。可以在同一 SET 语句中执行多个赋值。
       
      UPDATE 语句的 SET 子句中,= 也充当赋值运算符;但是,在这种情况下,只要满足 UPDATE 语句中 WHERE 的所有条件,它就会使操作符左侧的列采用右侧给定的值。可以在 UPDATE 语句的同一 SET 子句中进行多个赋值。
       
      在任何其他上下文中,= 被视为比较运算符。
       
        mysql> SELECT @var1, @var2;
        -> NULL, NULL
        mysql> SELECT @var1 := 1, @var2;
        -> 1, NULL
        mysql> SELECT @var1, @var2;
        -> 1, NULL
        mysql> SELECT @var1, @var2 := @var1;
        -> 1, 1
        mysql> SELECT @var1, @var2;
        -> 1, 1
        复制
         
         
         
         
        官方文档:
        https://dev.mysql.com/doc/refman/8.0/en/assignment-operators.html
        文章转载自数据库杂货铺,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

        评论