У меня есть схожие темы с различными вопросами,Какой правильный запрос для MySQL
Я учусь MySQL
. Я наткнулся на несколько вопросов с множественным выбором. Если я сомневаюсь, что ответ был или не был убежден, что это правильно, я начал искать google, stackoverflow и сайт mysql. Однако для некоторых я все еще не мог подтвердить, какой был правильный ответ.
Поэтому я задаю здесь вопрос.
Вопрос: Таблица Employees
создана. Вы хотите получить информацию о тех сотрудниках, у которых есть хотя бы один человек, подотчетный им. Какой из следующих запросов вы выполните для выполнения задачи?
А.
SELECT employee_id, last_name, job_id, department_id FROM Employees WHERE employee_id EXISTS(SELECT manager_id WHERE manager_id is NULL);
Б.
SELECT employee_id, last_name, job_id, department_id FROM Employees HAVING employee_id IN(SELECT manager_id FROM Employees WHERE manager_id is NOT NULL);
С.
SELECT employee_id, last_name, job_id, department_id FROM Employees outer WHERE EXISTS (SELECT 'x' FROM Employees WHERE manager_id = outer.employee_id);
Д.
SELECT employee_id, last_name, job_id, department_id FROM Employees HAVING employee_id WHERE employee_id IN (SELECT manager_id WHERE manager_id is NOT NULL);
- А и D не имеют
FROM
, пунктsubquery
. Я предполагаю, что это неверно (или просто опечатка в вопросе?) - Предлагаемый ответ - C. Однако я считаю, что это не сработает, потому что зарезервированное ключевое слово «внешний» используется здесь как псевдоним. Пожалуйста, поправьте меня, если я ошибаюсь.
- Так что на самом деле здесь остается только B.
- Ответ D неверен. (
WHERE
должно быть доHAVING
) - Ответ A недействителен, поскольку запросы
subquery
дляIS NULL
.
- А и D не имеют
Если у вас есть какие-либо замечания по этому вопрос/ответ или для любого из моих замечаний я рад это слышать!
на C, 'outer.employee_id' равно' Employees.employee_id' кстати. Хотя, разве это не для домашней работы или тестов? : P (B) – KarelG
Я готовлюсь к сертификации и нашел несколько примеров вопросов в Интернете. Обратите внимание, что OUTER является зарезервированным ключевым словом. Поэтому я бы подумал, что это просто не сработает. Или я ошибаюсь? – th3penguinwhisperer
Когда я пытаюсь выполнить C на тестовой таблице, я получаю: SELECT id из emp external WHERE существует (SELECT 'x' FROM emp WHERE mid = внешний.id); ERROR 1064 (42000): У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса, используемого рядом с «внешним WHERE» (SELECT 'x' FROM emp WHERE mid = outer.id) 'в строке 1 – th3penguinwhisperer