@@ -168,6 +168,17 @@ public function testUpdate(): void {
168168 'UPDATE t SET c = 1 WHERE c = 2 '
169169 );
170170
171+ // UPDATE with a table alias.
172+ $ this ->assertQuery (
173+ 'UPDATE `t` AS `a` SET `c` = 1 WHERE `a`.`c` = 2 ' ,
174+ 'UPDATE t AS a SET c = 1 WHERE a.c = 2 '
175+ );
176+
177+ $ this ->assertQuery (
178+ 'UPDATE `t` AS `a` SET `c` = 1 WHERE `a`.`c` = 2 ' ,
179+ 'UPDATE t AS a SET a.c = 1 WHERE a.c = 2 '
180+ );
181+
171182 // UPDATE with LIMIT.
172183 $ this ->assertQuery (
173184 'UPDATE `t` SET `c` = 1 WHERE rowid IN ( SELECT rowid FROM `t` LIMIT 1 ) ' ,
@@ -179,6 +190,24 @@ public function testUpdate(): void {
179190 'UPDATE `t` SET `c` = 1 WHERE rowid IN ( SELECT rowid FROM `t` ORDER BY `c` ASC LIMIT 1 ) ' ,
180191 'UPDATE t SET c = 1 ORDER BY c ASC LIMIT 1 '
181192 );
193+
194+ // UPDATE with multiple tables.
195+ $ this ->assertQuery (
196+ 'UPDATE `t1` SET `id` = 1 FROM `t2` WHERE `t1`.`c` = `t2`.`c` ' ,
197+ 'UPDATE t1, t2 SET t1.id = 1 WHERE t1.c = t2.c '
198+ );
199+
200+ // UPDATE with JOIN.
201+ $ this ->assertQuery (
202+ 'UPDATE `t1` SET `id` = 1 FROM `t2` WHERE `t1`.`c` = 2 AND `t1`.`c` = `t2`.`c` ' ,
203+ 'UPDATE t1 JOIN t2 ON t1.c = t2.c SET t1.id = 1 WHERE t1.c = 2 '
204+ );
205+
206+ // UPDATE with JOIN using a derived table.
207+ $ this ->assertQuery (
208+ 'UPDATE `t1` SET `id` = 1 FROM ( SELECT * FROM `t2` ) AS `t2` WHERE `t1`.`c` = 2 AND `t1`.`c` = `t2`.`c` ' ,
209+ 'UPDATE t1 JOIN ( SELECT * FROM t2 ) AS t2 ON t1.c = t2.c SET t1.id = 1 WHERE t1.c = 2 '
210+ );
182211 }
183212
184213 public function testDelete (): void {
0 commit comments