What is the difference between = and := in MySQL?

前端 未结 3 1624
隐瞒了意图╮
隐瞒了意图╮ 2021-02-07 07:12

What is the difference in between

set test_var = 20;

and

set test_var:=20;

as they both seem to ass

相关标签:
3条回答
  • 2021-02-07 07:24

    You can only use := for assignment - never for comparison. It's just a bit of syntactic sugar, it doesn't really change the functionality at all. You'll see it a lot in generated SQL from code.

    0 讨论(0)
  • 2021-02-07 07:29

    Both of them are assignment operators but one thing I can find their differences is that = can be used to perform boolean operation while := cannot.

    valid: SUM(val = 0)
    Invalid: SUM(val := 0)

    FROM User-Defined Variables

    One more thing, You can also assign a value to a user variable in statements other than SET. In this case, the assignment operator must be := and not = because the latter is treated as the comparison operator = in non-SET statements.

    mysql> SET @t1=1, @t2=2, @t3:=4;
    mysql> SELECT @t1, @t2, @t3, @t4 := @t1+@t2+@t3;
    +------+------+------+--------------------+
    | @t1  | @t2  | @t3  | @t4 := @t1+@t2+@t3 |
    +------+------+------+--------------------+
    |    1 |    2 |    4 |                  7 | 
    +------+------+------+--------------------+
    
    0 讨论(0)
  • 2021-02-07 07:47

    It's more or less Syntactic sugar.

    Take a look here

    Most important difference is

    Unlike =, the := operator is never interpreted as a comparison operator. This means you can use := in any valid SQL statement (not just in SET statements) to assign a value to a variable.

    0 讨论(0)
提交回复
热议问题