morrySnow
699159698e
[enhancement](planner) support update from syntax (#17639)
support update from syntax
note: enable_concurrent_update is not supported now
```
UPDATE <target_table>
SET <col_name> = <value> [ , <col_name> = <value> , ... ]
[ FROM <additional_tables> ]
[ WHERE <condition> ]
```
for example:
t1
```
+----+----+----+-----+------------+
| id | c1 | c2 | c3 | c4 |
+----+----+----+-----+------------+
| 3 | 3 | 3 | 3.0 | 2000-01-03 |
| 2 | 2 | 2 | 2.0 | 2000-01-02 |
| 1 | 1 | 1 | 1.0 | 2000-01-01 |
+----+----+----+-----+------------+
```
t2
```
+----+----+----+------+------------+
| id | c1 | c2 | c3 | c4 |
+----+----+----+------+------------+
| 4 | 4 | 4 | 4.0 | 2000-01-04 |
| 2 | 20 | 20 | 20.0 | 2000-01-20 |
| 5 | 5 | 5 | 5.0 | 2000-01-05 |
| 1 | 10 | 10 | 10.0 | 2000-01-10 |
| 3 | 30 | 30 | 30.0 | 2000-01-30 |
+----+----+----+------+------------+
```
t3
```
+----+
| id |
+----+
| 1 |
| 5 |
| 4 |
+----+
```
do update
```sql
update t1 set t1.c1 = t2.c1, t1.c3 = t2.c3 * 100 from t2 inner join t3 on t2.id = t3.id where t1.id = t2.id;
```
the result
```
+----+----+----+--------+------------+
| id | c1 | c2 | c3 | c4 |
+----+----+----+--------+------------+
| 3 | 3 | 3 | 3.0 | 2000-01-03 |
| 2 | 2 | 2 | 2.0 | 2000-01-02 |
| 1 | 10 | 1 | 1000.0 | 2000-01-01 |
+----+----+----+--------+------------+
```
2023-03-14 19:26:30 +08:00
..
2023-03-07 10:28:56 +08:00
2023-01-17 16:48:02 +08:00
2022-12-07 20:14:13 +08:00
2023-02-17 18:48:27 +08:00
2023-01-29 14:26:08 +08:00
2023-01-18 16:41:41 +08:00
2023-03-10 08:35:32 +08:00
2023-03-13 11:10:27 +08:00
2022-08-19 10:57:55 +08:00
2023-03-09 20:59:23 +08:00
2023-03-14 10:54:04 +08:00
2023-01-19 22:59:29 +08:00
2023-02-10 12:21:27 +08:00
2023-02-28 18:50:36 +08:00
2022-12-30 00:27:51 +08:00
2023-03-09 11:22:26 +08:00
2023-01-13 18:33:40 +08:00
2023-02-14 00:03:19 +08:00
2023-03-10 09:59:20 +08:00
2023-03-09 11:22:26 +08:00
2022-09-29 13:36:30 +08:00
2023-03-14 09:16:48 +08:00
2023-03-12 20:09:58 +08:00
2023-01-10 17:25:06 +08:00
2023-02-17 18:48:27 +08:00
2022-11-08 23:46:53 +08:00
2023-02-28 11:37:07 +08:00
2023-02-24 20:34:55 +08:00
2023-01-30 22:16:08 +08:00
2023-03-09 11:30:07 +08:00
2023-03-03 00:47:46 +08:00
2023-01-09 09:56:26 +08:00
2023-03-02 14:08:52 +08:00
2023-03-10 11:52:22 +08:00
2023-03-12 20:13:07 +08:00
2023-02-19 15:11:54 +08:00
2023-01-13 00:13:24 +08:00
2023-03-14 10:29:43 +08:00
2023-01-17 09:13:56 +08:00
2023-03-09 14:12:10 +08:00
2023-01-20 11:44:24 +08:00
2023-03-09 09:35:27 +08:00
2023-03-14 10:54:04 +08:00
2023-03-13 10:33:57 +08:00
2023-02-22 17:29:37 +08:00
2022-09-19 08:38:17 +08:00
2023-02-28 11:15:32 +08:00
2023-01-18 12:33:20 +08:00
2023-02-06 11:16:39 +08:00
2023-02-20 16:25:52 +08:00
2022-11-22 21:35:18 +08:00
2023-03-14 10:54:04 +08:00
2022-10-10 12:38:32 +08:00
2023-01-09 09:53:11 +08:00
2023-01-14 10:20:07 +08:00
2022-12-16 17:08:29 +08:00
2023-03-07 16:30:41 +08:00
2023-03-01 10:55:40 +08:00
2022-10-04 20:56:22 +08:00
2023-02-23 12:25:10 +08:00
2022-11-22 10:36:12 +08:00
2023-02-17 18:48:27 +08:00
2022-08-06 15:12:08 +08:00
2022-11-22 21:33:10 +08:00
2023-02-08 18:46:06 +08:00
2023-02-17 18:48:27 +08:00
2022-10-26 09:24:46 +08:00
2022-09-27 17:12:52 +08:00
2022-12-13 16:28:41 +08:00
2023-02-17 18:48:27 +08:00
2022-11-30 10:03:58 +08:00
2022-11-28 19:30:32 +08:00
2022-11-30 17:59:13 +08:00
2022-11-28 19:30:32 +08:00
2022-11-30 17:59:13 +08:00
2022-10-01 20:53:04 +08:00
2023-02-17 18:48:27 +08:00
2022-08-27 21:39:09 +08:00
2023-02-13 11:26:08 +08:00
2023-03-14 10:54:04 +08:00
2023-03-07 08:55:38 +08:00
2023-03-14 19:26:30 +08:00
2022-09-29 10:45:17 +08:00
2023-02-17 18:48:27 +08:00