我想更新所有不同的记录不同的值多行,但没有任何想法如何做到这一点,我使用下面的SQL更新单记录,但我有200多条记录更新
update employee
set staff_no = 'ab123'
where depno = 1
我有50个部门,在这些部门,我需要更新200多名工作人员没有。任何想法。目前,如果我只是做一个
select * from Departments
我可以看到所有员工的名单,需要工作人员没有更新。
UPDATE person
SET staff_no =
CASE person_no
WHEN 112 THEN 'ab123'
WHEN 223 THEN 'ab324'
WHEN 2343 THEN 'asb324'
and so on.....
END
5条答案
按热度按时间4dbbbstv1#
您应该能够使用
MERGE
语句在单个镜头中完成此操作。然而,这个声明将是相当大的:pengsaosao2#
使用case表达式
ahy6op9u3#
对于条件更新,可以使用多个update语句,也可以在SET子句中使用CASE表达式。
比如说
我希望你试着在这个网站上搜索一个类似的问题,最近有一个问题,这是我的答案。
vqlkdk9b4#
如果你有两张table,比如:
您可以使用
UPDATE
语句如下:yuvru6vn5#
不知道你的数据库设置是什么,但对我来说,我用一些简单的PLSQL解决了类似的问题。
假设您有两个表:
1.“request”表,具有多列,其中一列是“date”列,其主键是“id”
1.“item”表,有许多列,其中一列也是“date”列,另一列是指向其所属请求的指针,称为“request_id”
假设这是针对用户对一个或多个项目进行购买请求的情况,一对多关系,因此项目上的日期列应该与它们所属的请求的日期列相匹配。
现在让我们假设请求上的日期列意外地留空,但幸运的是不是项目的日期。因此,我们希望更新请求日期列,使其与相应项目的日期值相匹配。因此,对于每个请求,取其中一个项目,取item.date,并使用PLSQL将www.example.com设置request.date为这个item.date:
另一个PLSQL循环通过select的例子,但这个没有像我上面那样更新:https://stackoverflow.com/a/49635601/2888009