请注意,我有不同的问题类似的主题,哪个MySQL选择查询是正确的
我正在学习MySQL
。我遇到了一些选择题。 如果我怀疑答案是什么或者不确定是否正确,我开始搜索谷歌,stackoverflow和mysql站点。 但是对于一些人来说,我仍然无法确定正确答案是什么。
因此我在这里问这个问题。
问题: 表Employees
已创建。您想要检索至少有一个人向其报告的员工的信息。您将执行以下哪项查询来完成此任务?
A.
SELECT employee_id, last_name, job_id, department_id FROM Employees WHERE employee_id EXISTS(SELECT manager_id WHERE manager_id is NULL);
B.
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);
C.
SELECT employee_id, last_name, job_id, department_id FROM Employees outer WHERE EXISTS (SELECT 'x' FROM Employees WHERE manager_id = outer.employee_id);
D.
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);
- A和d不具有
FROM
条款subquery
。我猜这是无效的(或只是在错误中的错字?) - 建议的答案是C.但我相信这是行不通的,因为保留关键字“外部”用作别名在这里。如果我错了,请纠正我。
- 所以实际上只剩下B了。
- 答案D顺序不正确。 (
WHERE
应在HAVING
之前) - 答案A无效,因为
subquery
查询IS NULL
。
- A和d不具有
如果你有关于这个问题/答案或我的任何言论发表任何言论,我很高兴听到它!
在C,'outer.employee_id'等于' Employees.employee_id'顺便说一句。虽然,这不是为了做作业或测试吗? :P(B) – KarelG
我正在准备认证,并在互联网上发现了一些示例问题。请注意,OUTER是一个保留关键字。所以我会认为这是行不通的。或者我错了? – th3penguinwhisperer
当我在测试表上尝试C时,我得到:从外部WHERE存在的SELECT id(SELECT'x'FROM emp WHERE mid = outer.id); 错误1064(42000):您的SQL语法错误;检查与您的MySQL服务器版本相对应的手册,以便在第1行的外部WHERE存在(SELECT'x'FROM emp WHERE mid = outer.id)'附近使用正确的语法 – th3penguinwhisperer