SQL вставить идентификатор из другой таблицы путем сравнения данных из обеих таблиц

#sql #oracle

#sql #Oracle

Вопрос:

Я думаю, это простой вопрос.

У меня есть эти 2 таблицы:

ID ИМЯ ИСПОЛНИТЕЛЯ
1 Плохой кролик
3 Jbalvin

И

Идентификатор песни ИМЯ ИСПОЛНИТЕЛЯ
100 Плохой кролик
101 Jbalvin

И я хотел бы заменить имя исполнителя во второй таблице на идентификатор исполнителя.

Спасибо!!!!

Комментарии:

1. Вы можете использовать внутреннее соединение вместе с соответствующими столбцами artist_name, такими как t1.artist_name = t2.artist_name

Ответ №1:

ВСТАВКА, ЗАМЕНА и т. Д. Имеют очень точные значения в SQL, потому что они являются командами. В будущем, пожалуйста, используйте правильную терминологию при задании вопроса.

В этом случае я предполагаю, что вы хотите заменить ARTIST_ID на ARTIST_NAME; обычно это будет ОБНОВЛЕНИЕ. Однако использование неправильного столбца (и неправильного типа данных) является плохой практикой, которая приведет вас и ваших коллег в замешательство. Поэтому вам нужно изменить имя столбца в целевой таблице. Существуют различные способы достижения этой цели; тот, который я описываю ниже, является самым прощающим в отношении ошибок и исключений.

Итак, давайте сделаем ссылку на внешний ключ между таблицей 1 ( artists ) и таблицей 2 ( songs ). Следующий пример может содержать больше шагов, чем вам требуется, и в этом случае опустите то, что вы не хотите делать.

 alter table songs add artist_id number /  -- use MERGE to update one table with values from another  merge into songs song using (select * from artists) artt on (artt.artist_name = song.artist_name) when matched then  update song.artist_id = artt.artist_id /  -- this step will fail if you have values of ARTIST_NAME in SONGS  -- which don't match anything in ARTISTS   alter table songs   modify artist_id not null /  -- if the last step succeeded, normalise the data model  alter table songs  drop column artist_name /  

Кроме того, вы должны добавить внешний ключ (при условии, что у ХУДОЖНИКОВ есть идентификатор АРТИСТА в качестве первичного ключа…

 alter table songs  add constraint song_artt_fk foreign key (artist_id) references artists /