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-14 19:26:30 +08:00
2023-02-04 22:54:53 +08:00
2023-03-14 19:26:30 +08:00
2022-08-18 16:07:28 +08:00
2023-02-24 15:17:01 +08:00
2023-03-13 14:26:02 +08:00
2022-08-13 20:46:52 +08:00