跳到主要内容

赋值运算符

seekdb 支持常用的赋值运算符。

逻辑运算符概览

运算符操作数含义
:=一元将运算符右侧的值赋值给左侧的变量
=一元赋值(作为 SET 语句的一部分,或作为 UPDATE 语句中的 SET 子句的一部分)

说明

赋值运算符 :=

:= 右侧的值可以是一个字面量、变量或者合法的表达式,包括查询的结果(前提是该值为标量值)。您可以在同一个 SET 语句中执行多个赋值。您可以在同一个语句执行多次赋值。

= 不同,:= 运算符永远不会被解析为比较运算符。这意味着您可以在任何有效的 SQL 语句使用 := 值赋给变量,而不只是在 SET 语句中使用。

示例如下:

SELECT @var1 := 1, @var2;
+------------+-------+
| @var1 := 1 | @var2 |
+------------+-------+
| 1 | NULL |
+------------+-------+
1 row in set (0.001 sec)

SELECT @var1:=COUNT(*) FROM t1;
+-----------------+
| @var1:=COUNT(*) |
+-----------------+
| 5 |
+-----------------+
1 row in set (0.004 sec)

SELECT @var1;
+-------+
| @var1 |
+-------+
| 5 |
+-------+
1 row in set (0.001 sec)

赋值运算符=

= 运算符在以下两种情况下执行赋值:

  • SET 语句中,= 被视为赋值运算符,用于将运算符右侧的值赋值给左侧的变量。所以,在 SET 语句中使用时,=:= 的处理方式相同。

  • UPDATE 语句的 SET 子句中,= 还充当赋值运算符。在这种情况下,如果满足UPDATE 语句的 WHERE 条件,就会将运算符右侧的值赋值给左侧的列。您可以在 UPDATE 语句的同一个 SET 子句中进行多个赋值。

除以上两种情况,= 都被视为比较运算符。

SELECT * FROM t1;
+------+------+
| c1 | c2 |
+------+------+
| 1 | 1 |
+------+------+
1 row in set (0.003 sec)

UPDATE t1 SET c1 = c1 + 1, c2 = c1;
Query OK, 1 row affected (0.003 sec)
Rows matched: 1 Changed: 1 Warnings: 0

SELECT * FROM t1;
+------+------+
| c1 | c2 |
+------+------+
| 2 | 2 |
+------+------+
1 row in set (0.002 sec)