MySQL 使用 UPDATE 和 JOIN 语句来更新一张表中的某些列的值
在 MySQL 中,我们可以使用 UPDATE 和 JOIN 语句来更新一张表中的某些列的值,并使用另一张表中的数据来作为新值。
阅读更多:MySQL 教程
UPDATE 和 JOIN 语句
UPDATE 语句是用于更新表中现有记录的语句。UPDATE 语句可以与 JOIN 语句组合使用以更新一个表中的列:
UPDATE table1
INNER JOIN table2 ON table1.key = table2.key
SET table1.column1 = table2.column2
WHERE table1.key = 'id';
在这个语句中,我们使用了 INNER JOIN 来连接两张表。我们使用了 ON 语句来指定链接使用的列名。然后,我们使用 SET 语句来更新 table1 的列名为 column1 的列,使用 table2 的列名为 column2 的值。最后使用 WHERE 子句指定要更新的记录。
示例
假设我们有两张表,分别为 users 和 locations,如下所示:
users 表:
| id | name | location_id |
|---|---|---|
| 1 | Tom | 1 |
| 2 | Sam | 1 |
| 3 | Bob | 2 |
| 4 | Jim | 3 |
locations 表:
| id | city |
|---|---|
| 1 | Toronto |
| 2 | Montreal |
| 3 | Vancouver |
我们想要在 users 表中更新 location_id 列的值,以便它们使用 locations 表中的 city 列。我们可以使用以下语句来完成此操作:
UPDATE users
INNER JOIN locations ON users.location_id = locations.id
SET users.location_id = locations.city;
操作后,users 表的内容会变为:
| id | name | location_id |
|---|---|---|
| 1 | Tom | Toronto |
| 2 | Sam | Toronto |
| 3 | Bob | Montreal |
| 4 | Jim | Vancouver |
总结
通过以上示例,我们可以看出,使用 UPDATE 和 JOIN 语句可以快速地更新一个表中的列,并且可以使用另一张表中的数据来作为新值。在实际开发中,这种语法非常有用,可以使我们更加方便地对表进行修改而不会影响到其他表中的数据。
极客教程