使用 UPDATE 语句修改表中的字段值。

    示例如下:

    创建示例表 t1 和 t2。

    1. obclient> CREATE TABLE t1(c1 int primary key, c2 int);
    2. Query OK, 0 rows affected (0.16 sec)
    3. obclient> SELECT * FROM t1;
    4. +----+------+
    5. | c1 | c2 |
    6. +----+------+
    7. | 1 | 1 |
    8. | 2 | 2 |
    9. | 3 | 3 |
    10. | 4 | 4 |
    11. +----+------+
    12. 4 rows in set (0.06 sec)
    13. obclient> CREATE TABLE t2(c1 int primary key, c2 int) partition BY key(c1) partitions 4;
    14. Query OK, 0 rows affected (0.19 sec)
    15. obclient> SELECT * FROM t2;
    16. +----+------+
    17. | c1 | c2 |
    18. +----+------+
    19. | 5 | 5 |
    20. | 1 | 1 |
    21. | 2 | 2 |
    22. | 3 | 3 |
    23. +----+------+
    24. 4 rows in set (0.02 sec)
    • 将表 t1 中 “t1.c1=1” 对应的那一行数据的 c2 列值修改为 100。
    1. obclient> UPDATE t1 SET t1.c2 = 100 WHERE t1.c1 = 1;
    2. Query OK, 1 row affected (0.02 sec)
    3. Rows matched: 1 Changed: 1 Warnings: 0
    4. obclient> SELECT * FROM t1;
    5. +----+------+
    6. | c1 | c2 |
    7. +----+------+
    8. | 1 | 100 |
    9. | 2 | 2 |
    10. | 3 | 3 |
    11. | 4 | 4 |
    12. +----+------+
    13. 4 rows in set (0.01 sec)
    • 将表 t1 中按照 c2 列排序的前两行数据的 c2 列值修改为 100。
    1. obclient> UPDATE t1 SET t1.c2 = 100 ORDER BY c2 LIMIT 2;
    2. Query OK, 2 rows affected (0.02 sec)
    3. Rows matched: 2 Changed: 2 Warnings: 0
    4. obclient> SELECT * FROM t1;
    5. +----+------+
    6. | c1 | c2 |
    7. +----+------+
    8. | 1 | 100 |
    9. | 2 | 100 |
    10. | 3 | 3 |
    11. | 4 | 4 |
    12. +----+------+
    13. 4 rows in set (0.01 sec)
    • 将表 t2 中 p2 分区的数据中 “t2.c1 > 2” 的对应行数据的 c2 列值修改为 100。
    1. obclient> UPDATE t2 partition(p2) SET t2.c2 = 100 WHERE t2.c1 > 2;
    2. Query OK, 1 row affected (0.02 sec)
    3. Rows matched: 1 Changed: 1 Warnings: 0
    4. obclient> SELECT * FROM t2;
    5. +----+------+
    6. | c1 | c2 |
    7. +----+------+
    8. | 5 | 5 |
    9. | 1 | 1 |
    10. | 2 | 2 |
    11. | 3 | 100 |
    12. +----+------+
    13. 4 rows in set (0.06 sec)
    • 修改多个表。将 t1 表和 t2 表中满足 “t1.c1 = t2.c1” 对应行的数据 t1 表中的 c2 列值修改为 100,t2 表中的 c2 列值修改为 200。
    1. obclient> UPDATE t1,t2 SET t1.c2 = 100, t2.c2 = 200 WHERE t1.c2 = t2.c2;
    2. Query OK, 6 rows affected (0.03 sec)
    3. Rows matched: 6 Changed: 6 Warnings: 0
    4. obclient> SELECT * FROM t1;
    5. +----+------+
    6. | c1 | c2 |
    7. +----+------+
    8. | 1 | 100 |
    9. | 2 | 100 |
    10. | 3 | 100 |
    11. | 4 | 4 |
    12. +----+------+
    13. 4 rows in set (0.00 sec)
    14. obclient> SELECT * FROM t2;
    15. +----+------+
    16. | c1 | c2 |
    17. +----+------+
    18. | 5 | 5 |
    19. | 1 | 200 |
    20. | 2 | 200 |
    21. | 3 | 200 |
    22. +----+------+
    23. 4 rows in set (0.01 sec)

    更多 UPDATE 语句相关的语法请参见 UPDATE