sql使用表2中的id更新表1(如果与名称匹配)

6jjcrrmo  于 2021-08-13  发布在  Java
关注(0)|答案(2)|浏览(581)

有人能帮我做以下事情吗?
我有两个表,需要用表2中的数据更新表1,如下例所示
表1:
id-名称-引擎id
1-x-空
表2:
id-名称
0-x
结果(见表1):
id-名称-引擎id
1-x-0
使用表1上的循环

2sbarzqh

2sbarzqh1#

虽然您还没有为数据库产品添加标签,但对于许多sql后端,语法几乎是相同的:

update table1
set engineId = t2.Id
from table1 t1 
inner join table2 t2 on t1.Name = t2.Name;

下面是dbfiddle的sqlserver演示
编辑:如果您使用的是mysql,它的语法有点奇怪:

update Table1 t1
inner join Table2 t2 on t1.Name = t2.Name
set t1.engineId = t2.Id;
af7jpaap

af7jpaap2#

在大多数数据库中,可以使用相关子查询执行此操作:

update t1
set engine_id = (select engine_id from t2 where t2.name = t1.name)
where engine_id is null

请注意,要使其正常工作,不应存在重复项 namet2 (否则,子查询可能返回多行,这将导致查询出错)。

相关问题