#sql #oracle #subquery #where-clause
#sql #Oracle #подзапрос #where-предложение
Вопрос:
Я пытаюсь найти все записи в таблице job_history, где их department_ID отличается от department_id в таблице employees, используя коррелированный подзапрос с оператором exists, однако я получаю код ошибки:
ORA-00933: команда SQL не завершена должным образом
Может кто-нибудь сказать, пожалуйста, скажите мне, что я делаю неправильно, основываясь на схеме и коде ниже?
Select *
from Job_History as J
where Exists(Select * from hr.Employees e where e.Department_ID != J.Department_ID);
Ответ №1:
Здесь:
from Job_History as J
Oracle не поддерживает ключевое as
слово для псевдонима таблицы (оно поддерживается только для псевдонимов столбцов).
Вам также, скорее всего, потребуется предложение корреляции employee_id
в подзапросе.
Итак:
select *
from job_history j
where exists (
select 1
from hr.employees e
where e.employee_id = j.employee_id and e.department_id <> j.department_id
);
Комментарии:
1. Большое вам спасибо за вашу помощь. Я смог получить ответ, добавив hr в job_history ниже. Извините, что не упомянул, что я использовал Oracle SQL live, поэтому мне пришлось добавить HR при выборе таблицы. Смотрите ниже: выберите * из hr.job_history j, где существует ( выберите 1 из hr.employees e, где e.employee_id = j.employee_id и e.department_id <> j.department_id);