UPDATE

    UpdateStmt:

    PriorityOpt:

    PriorityOpt

    TableRefs:

    TableRefs

    AssignmentList:

    WhereClauseOptional:

    1. Query OK, 0 rows affected (0.11 sec)
    1. INSERT INTO t1 (c1) VALUES (1), (2), (3);
    1. SELECT * FROM t1;
    1. | id | c1 |
    2. +----+----+
    3. | 2 | 2 |
    4. | 3 | 3 |
    5. +----+----+
    6. 3 rows in set (0.00 sec)
    1. Rows matched: 1 Changed: 1 Warnings: 0

    在计算表达式中的列时,TiDB 总使用原始的值。例如:

    1. CREATE TABLE t (a int, b int);
    2. INSERT INTO t VALUES (1,2);
    3. UPDATE t SET a = a+1,b=a;

    在 MySQL 中,b 列的值会被更新成 2,因为 b 列被设置为与 a 列相同,而 (最初是 1)在同一条语句中被更新成了 2。