UPDATE should not have a FROM , and the SET clause should correspond to the full set of table references:
UPDATE table1 t1 JOIN table2 t2 ON t1.ID = t2.ID SET t1.col1 = 1 WHERE t1.Name = 'Test' AND t2.Age = 25;
Test case:
CREATE TABLE table1 (id int, col1 int, name varchar(20)); CREATE TABLE table2 (id int, age int); INSERT INTO table1 VALUES (1, 0, 'Test'); INSERT INTO table1 VALUES (2, 0, 'Test'); INSERT INTO table1 VALUES (3, 0, 'No Test'); INSERT INTO table2 VALUES (1, 20); INSERT INTO table2 VALUES (2, 25); INSERT INTO table2 VALUES (3, 25);
Result:
SELECT * FROM table1; +------+------+---------+ | id | col1 | name | +------+------+---------+ | 1 | 0 | Test | | 2 | 1 | Test | | 3 | 0 | No Test | +------+------+---------+ 3 rows in set (0.00 sec)
source share