【问题标题】:How to Update bulk records in one table by finding the column's value existence in another table using Stored procedures?如何通过使用存储过程在另一个表中查找列的值存在来更新一个表中的批量记录?
【发布时间】:2019-10-22 07:34:18
【问题描述】:

我有两个表,即 'loan_details''loan_mapping'。我需要通过loan_details 表中存在的值设置loan_mapping 表的mod_id。因此,仅当 'loan_mapping' 表的loan_number 列存在于 'loan_detail' 表记录中时,才会批量更新 'loan_mapping' 表的记录(20K 记录)。 (我的意思是如果使用loan_number查找成功)

两个表的定义如下:

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)
);

因此,我需要确切的存储过程来执行我总结的问题中提到的所需更新。

【问题讨论】:

  • 到目前为止你有什么尝试?
  • 更新loan_mapping map set mod_id = (select det.mod_id from loan_details det where det.loan_number = map.loan_number) ;我使用此查询在本地计算机中进行更新。由于“PROD”中的记录数超过 20K,我的学长告诉我,存储过程将是更好的解决方案,而不是更新脚本。因此我发布了请求存储过程。

标签: sql postgresql stored-procedures postgresql-9.6


【解决方案1】:

我在这里看不到存储过程的任何原因:

update loan_mapping lm
  set mod_id = ld.mod_id
from loan_details ld  
where ld.loan_number = lm.loan_number;

【讨论】:

    猜你喜欢
    • 2019-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多