#sql #oracle #subquery #inner-join #sql-delete
#sql #Oracle #подзапрос #внутреннее объединение #sql-удалить
Вопрос:
Я пытаюсь удалить из таблицы РИСОВАНИЯ при объединении с МУЗЕЙНОЙ таблицей. Выполняемый мной запрос выдает сообщение об ошибке «ORA-00933: команда SQL не завершена должным образом». Для справки я вставил свой запрос ниже.
DELETE FROM PAINTING
INNER JOIN MUSEUM ON PAINTING.Museum_Name = MUSEUM.MuseumName
WHERE MUSEUM.MuCountry = 'France' OR MUSEUM.MuCountry = 'Spain';
Ответ №1:
В Oracle вы бы использовали коррелированный подзапрос.
delete from painting p
where exists (
select 1 from museum m where pm.museum_name = m.museum_name and m.mu_country = 'France'
)
Комментарии:
1. Хорошо, это работает для удаления всех картин из Франции. Если я также хотел удалить painting из Испании, могу ли я добавить «ИЛИ m.MuCountry = ‘Spain'» в конец?
2. @hasse:
and (and m.mu_country = 'France' or and m.mu_country = 'Spain')
— здесь важны круглые скобки. Ноin
лучше:and m.mu_country in ('France', 'Spain')
. Или: