Documentation Home
MySQL 9.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 41.2Mb
PDF (A4) - 41.3Mb
Man Pages (TGZ) - 262.8Kb
Man Pages (Zip) - 368.8Kb
Info (Gzip) - 4.1Mb
Info (Zip) - 4.1Mb


MySQL 9.4 Reference Manual  / ...  / Functions and Operators  / Operators  /  Assignment Operators

14.4.4 Assignment Operators

Table 14.6 Assignment Operators

NameDescription
:= Assign a value
= Assign a value (as part of aSET statement, or as part of theSET clause in anUPDATE statement)

  • :=

    Assignment operator. Causes the user variable on the left hand side of the operator to take on the value to its right. The value on the right hand side may be a literal value, another variable storing a value, or any legal expression that yields a scalar value, including the result of a query (provided that this value is a scalar value). You can perform multiple assignments in the sameSET statement. You can perform multiple assignments in the same statement.

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

    mysql> SELECT @var1, @var2;        -> NULL, NULLmysql> SELECT @var1 := 1, @var2;        -> 1, NULLmysql> SELECT @var1, @var2;        -> 1, NULLmysql> SELECT @var1, @var2 := @var1;        -> 1, 1mysql> SELECT @var1, @var2;        -> 1, 1mysql> SELECT @var1:=COUNT(*) FROM t1;        -> 4mysql> SELECT @var1;        -> 4

    You can make value assignments using:= in other statements besidesSELECT, such asUPDATE, as shown here:

    mysql> SELECT @var1;        -> 4mysql> SELECT * FROM t1;        -> 1, 3, 5, 7mysql> UPDATE t1 SET c1 = 2 WHERE c1 = @var1:= 1;Query OK, 1 row affected (0.00 sec)Rows matched: 1  Changed: 1  Warnings: 0mysql> SELECT @var1;        -> 1mysql> SELECT * FROM t1;        -> 2, 3, 5, 7

    While it is also possible both to set and to read the value of the same variable in a single SQL statement using the:= operator, this is not recommended.Section 11.4, “User-Defined Variables”, explains why you should avoid doing this.

  • =

    This operator is used to perform value assignments in two cases, described in the next two paragraphs.

    Within aSET statement,= is treated as an assignment operator that causes the user variable on the left hand side of the operator to take on the value to its right. (In other words, when used in aSET statement,= is treated identically to:=.) The value on the right hand side may be a literal value, another variable storing a value, or any legal expression that yields a scalar value, including the result of a query (provided that this value is a scalar value). You can perform multiple assignments in the sameSET statement.

    In theSET clause of anUPDATE statement,= also acts as an assignment operator; in this case, however, it causes the column named on the left hand side of the operator to assume the value given to the right, provided anyWHERE conditions that are part of theUPDATE are met. You can make multiple assignments in the sameSET clause of anUPDATE statement.

    In any other context,= is treated as acomparison operator.

    mysql> SELECT @var1, @var2;        -> NULL, NULLmysql> SELECT @var1 := 1, @var2;        -> 1, NULLmysql> SELECT @var1, @var2;        -> 1, NULLmysql> SELECT @var1, @var2 := @var1;        -> 1, 1mysql> SELECT @var1, @var2;        -> 1, 1

    For more information, seeSection 15.7.6.1, “SET Syntax for Variable Assignment”,Section 15.2.17, “UPDATE Statement”, andSection 15.2.15, “Subqueries”.