SQL查询更新1000条记录
Posted
技术标签:
【中文标题】SQL查询更新1000条记录【英文标题】:SQL query to update 1000 records 【发布时间】:2020-02-06 11:38:15 【问题描述】:我创建了 1000 条 ID 作为序列 ID 的记录。现在,我有 1000 个唯一代码的列表,我需要将其分配给每条记录。
像这样:
我正在寻找使用 SQL 脚本实现它的建议。
【问题讨论】:
重新开始,同时插入唯一代码和ID。 @jarlh 此时,我无法访问代码。感谢您的快速回复。 如果您无法访问代码,那么您将如何分配它们? 除了@grootygroot 提出的问题(他打败了我),即使您可以访问代码,您如何确定哪个代码分配给哪个id? @a_horse_with_no_name 代码将提供给另一个团队,我必须提供更新脚本让他们更新代码 【参考方案1】:您可以使用MERGE
声明:
MERGE INTO destination_table dst
USING (
SELECT ROWNUM rn,
value
FROM your_codes_table
) src
ON ( src.rn = dst.id )
WHEN MATCHED THEN
UPDATE SET code = src.value
WHEN NOT MATCHED THEN
INSERT ( id, code ) VALUES ( destination_table__id__seq.NEXTVAL, src.value );
但是,这将增加更新和插入的每一行的序列,这可能不是您想要的。
最简单的方法是从目标表中删除现有行(无代码)并删除您基于 id
值的序列,然后重新创建序列(将序列重置回其起始值) :
DELETE FROM destination_table;
DROP SEQUENCE destination_table__id__seq;
CREATE SEQUENCE destination_table__id__seq;
并插入行:
INSERT INTO destination_table ( id, code )
SELECT destination_table__id__seq.NEXTVAL,
value
FROM your_codes_table
db<>fiddle
【讨论】:
【参考方案2】:你只想要row_number()
吗?
select code, row_number() over (order by code) as id
from t;
【讨论】:
以上是关于SQL查询更新1000条记录的主要内容,如果未能解决你的问题,请参考以下文章