Вставьте значение, если в объединительной таблице найдено совпадение

У меня есть таблица кодов ICD9, где некоторые из них не закодированы должным образом. Я хотел бы вставить "Нет" в столбец в этой таблице, если совпадение не может быть найдено в другой таблице.

Так, например, у меня есть код 292300 и он должен быть 2923. Я хочу иметь что-то вроде

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

И если для кода icd9 не найдено совпадений, выполните INSERT INTO,

Примечание: таблица GEM содержит коды icd9 и их эквивалентные отображения для icd10.

2 ответа

Решение

Если вы вставляете новую строку в icd9codesтогда это очень просто SELECT запрос.

insert into icd9codes (icd9)
select icd10
from GEM;

Это самый буквальный ответ на ваш вопрос. Тем не менее, я подозреваю, что у вас есть существующие строки в icd9codes и вы хотите обновить значение столбца в этих строках, если их icd9 значение существует в icd10 из GEM,

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

Это говорит, для любого ряда в icd9codes который имеет соответствующее значение в GEMустановите его the_new_column значение для No,

Нам нужна схема вашей базы данных, тем временем, это выстрел в темноте. Сделайте резервную копию вашего стола в первую очередь.

UPDATE icd9codes
LEFT JOIN GEM ON
icd9codes.icd9 = GEM.icd9
SET icd9codes.icd9 = COALESCE(GEM.icd10,'No')
Другие вопросы по тегам