插入一个值 如果在 join table 中找到匹配项

Insert a value If a match is found in join table

我有 table 个 ICD9 代码,其中有几个编码不正确。如果在另一个 table 中找不到匹配项,我想将 "No" 插入到 table 的列中。

例如,我有一个代码 292300,它应该是 2923。我想要

SELECT icd9, icd10 from icd9codes, GEM where icd9 = icd10;

如果没有找到 icd9 代码的匹配项,则执行 INSERT INTO.

注意:GEM table 包含 icd9 代码及其对 icd10 的等效映射。

我们需要您的数据库架构,与此同时,这是一个盲目的尝试。 首先备份您的 table。

UPDATE icd9codes
LEFT JOIN GEM ON
icd9codes.icd9 = GEM.icd9
SET icd9codes.icd9 = COALESCE(GEM.icd10,'No')

如果要向 icd9codes 中插入新行,那么这是一个非常简单的 SELECT 查询。

insert into icd9codes (icd9)
select icd10
from GEM;

这是对你问题最直接的回答。但是,我怀疑你拥有的是 icd9codes 中的现有行,并且你想更新这些行的列值,如果它们的 icd9 值存在于 GEMicd10 中.

update icd9codes
set the_new_column = 'No'
where exists (
  select 1
  from GEM
  where icd10 = icd9codes.icd9
);

这表示,对于 icd9codes 中具有相应值的任何行 GEM,将其 the_new_column 值设置为 No