Update a table joining 1 more table.
UPDATE t1 SET t1.col1 =1 FROM table1 t1 JOIN table2 t2
ON t1.ID=t2.ID
WHERE t1.Name='Test' AND t2.Age=25;
i get this error,You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM table1 t1 JOIN table2 t2 ...
Any thoughts?
Thanks.
There shouldn't be a FROM
clause in the UPDATE
statement, and the SET
clause should follow 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)
UPDATE table1 SET col1 = 1
from table1 t1
JOIN table2 t2 ON t1.ID = t2.ID
WHERE t1.Name = 'Test' AND t2.Age = 25;
I have a problem in update join. in table1 i saved username instead of userid. And for username datatype was varchar(10). When name exceeds 10 then name is saved with 10 character only. Now when i try to update using join query it doesn't works on those fields that have not exact unername in users table, Notice name bill gat in table1 but the name in users field was bill gates -es missing.
SELECT * FROM table1;
+------+------+---------+
| id | col1 | created_by|
+------+------+---------+
| 1 | 0 | steve jobs|
| 2 | 1 | bill gat |
| 3 | 0 | Jones |
+------+------+---------+
3 rows in set (0.00 sec)
===I solved this way
UPDATE table1 AS tr
JOIN users AS u ON u.name LIKE CONCAT('%', tr.created_by, '%')
SET tr.created_by=u.id
WHERE tr.created_by IS NOT NULL
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.