如何使用存储过程通过在另一个 table 中查找列的值存在来更新一个 table 中的批量记录?
How to Update bulk records in one table by finding the column's value existence in another table using Stored procedures?
我有两个 table,即 'loan_details' 和 'loan_mapping'。我需要通过 loan_details table 中存在的值设置 loan_mapping table 的 mod_id。因此,仅当 'loan_mapping' table 记录的 loan_number 列出现在 'loan_detail' 时,它才会批量更新 'loan_mapping' table 的记录(20K 条记录) table 条记录。 (我的意思是如果使用 loan_number 查找成功)
两个table的定义如下:
CREATE TABLE public.loan_details
(
loan_number bigint NOT NULL,
crp_lob integer,
mod_id integer,
CONSTRAINT loan_details_pkey PRIMARY KEY (loan_number)
);
CREATE TABLE public.loan_mapping
(
loan_number bigint NOT NULL,
spoc_id integer NOT NULL,
assigned_datetime timestamp without time zone,
loan_spoc_map_id integer NOT NULL DEFAULT nextval ('lsa_loan_spoc_mapping_loan_spoc_map_id_seq'::regclass),
line_of_business_id integer,
mod_id integer,
CONSTRAINT loan_spoc_mapping_pk PRIMARY KEY (loan_spoc_map_id),
CONSTRAINT fk_loan_spoc_loan_number FOREIGN KEY (loan_number)
REFERENCES public.loan_details (loan_number)
);
所以,我需要精确的存储过程来执行我总结的问题中提到的所需更新。
我看不出有任何理由在这里使用存储过程:
update loan_mapping lm
set mod_id = ld.mod_id
from loan_details ld
where ld.loan_number = lm.loan_number;
我有两个 table,即 'loan_details' 和 'loan_mapping'。我需要通过 loan_details table 中存在的值设置 loan_mapping table 的 mod_id。因此,仅当 'loan_mapping' table 记录的 loan_number 列出现在 'loan_detail' 时,它才会批量更新 'loan_mapping' table 的记录(20K 条记录) table 条记录。 (我的意思是如果使用 loan_number 查找成功)
两个table的定义如下:
CREATE TABLE public.loan_details
(
loan_number bigint NOT NULL,
crp_lob integer,
mod_id integer,
CONSTRAINT loan_details_pkey PRIMARY KEY (loan_number)
);
CREATE TABLE public.loan_mapping
(
loan_number bigint NOT NULL,
spoc_id integer NOT NULL,
assigned_datetime timestamp without time zone,
loan_spoc_map_id integer NOT NULL DEFAULT nextval ('lsa_loan_spoc_mapping_loan_spoc_map_id_seq'::regclass),
line_of_business_id integer,
mod_id integer,
CONSTRAINT loan_spoc_mapping_pk PRIMARY KEY (loan_spoc_map_id),
CONSTRAINT fk_loan_spoc_loan_number FOREIGN KEY (loan_number)
REFERENCES public.loan_details (loan_number)
);
所以,我需要精确的存储过程来执行我总结的问题中提到的所需更新。
我看不出有任何理由在这里使用存储过程:
update loan_mapping lm
set mod_id = ld.mod_id
from loan_details ld
where ld.loan_number = lm.loan_number;