Вставьте значение, если в объединительной таблице найдено совпадение
У меня есть таблица кодов 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')