ql 中更新表数据的通用方法包括:使用 join 语句,匹配两个表并更新目标表的指定列;使用子查询,获取源表中匹配行的值并更新目标表;使用 merge 语句(mysql 8.0 及更高版本),合并两个表并按条件更新或插入数据。
根据一个表的数据更新另一个表数据的 SQL 写法
最近大家都在看
MySQL update 命令的详细用法
怎么查看mysql的锁表
mysql如何将字符串转换成数字
方法一:使用 JOIN 语句
1
2
|
UPDATE table2 SET column2 = table1.column1
JOIN table1 ON table2.id = table1.id;
|
方法二:使用子查询
1
2
3
4
5
6
|
UPDATE table2
SET column2 = (
SELECT column1
FROM table1
WHERE table2.id = table1.id
);
|
方法三:使用 MERGE 语句(MySQL 8.0 及更高版本)
1
2
3
4
5
|
MERGE INTO table2 AS t2
USING table1 AS t1
ON t2.id = t1.id
WHEN MATCHED THEN
UPDATE SET column2 = t1.column1;
|
示例
假设有以下两个表:
- table1:包含具有 id 和 name 列的数据
- table2:包含具有 id 和 description 列的数据
要使用 table1 中的 name 更新 table2 中的 description,可以使用以下 SQL 查询:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
-- 使用 JOIN 语句
UPDATE table2 SET description = table1.name
JOIN table1 ON table2.id = table1.id;
-- 使用子查询
UPDATE table2
SET description = (
SELECT name
FROM table1
WHERE table2.id = table1.id
);
-- 使用 MERGE 语句(MySQL 8.0 及更高版本)
MERGE INTO table2 AS t2
USING table1 AS t1
ON t2.id = t1.id
WHEN MATCHED THEN
UPDATE SET description = t1.name;
|
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [翻译] 为什么 Tracebit 用 C# 开发
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
· 刚刚!百度搜索“换脑”引爆AI圈,正式接入DeepSeek R1满血版