У меня есть две таблицы, скажем, табличные книги и авторы таблиц.Обновление таблицы в oracle из другой таблицы с дублирующимися записями
Таблица книга имеет 4 поля, BookID, Название, Автор, Издательство
авторы Таблицы имеет 5 поля AuthorID, Название, Автор, Издательство, Цена
Я хочу, чтобы обновить книгу, чтобы иметь поле цен от авторы. Нет ни одного уникального ключа, поэтому критерии состоят в том, чтобы сопоставить Title или Author или Publisher, а затем добавить эту цену в книги. В моем случае у авторов много повторяющихся значений в заголовке, авторе или издателе, поэтому я получаю ошибки обновления из-за дубликатов. Итак, в основном, как в оракуле я могу обновлять книги с этими критериями, и в случае дубликатов просто выберите любую запись, не имеет значения, что и поместить в нее? На других языках есть верхняя команда, которую вы можете использовать, чтобы делать такую вещь, но похоже, что Oracle этого недостаточно.
Я пробовал различные операции слияния и обновления самостоятельно без везения. Что-то вроде:
UPDATE books n
set n.price = (
select t.price from authors t where
n.title= t.title or
n.author = t.author or
n.publisher = t.publisher)
Но это утверждение не проверяет наличие дубликатов и остановить их таким образом, не так я пропускаю этот ключ.
Это требование не имеет смысла. Если книга в таблице BOOKS соответствует строке в таблице AUTHORS издателем, укажите * в качестве цены этой книги * цену за ЛЮБУЮ книгу (какую-то случайную), когда-либо опубликованную этим издателем? Зачем вам когда-нибудь делать что-то подобное? – mathguy
Я не делаю таблицы, я просто делаю то, что они просят. Я согласен, что это глупо. – DanH
@mathguy Я знаю ... иногда я чувствую себя помощником, отвечая на вопросы о том, как делать плохие вещи. –