Mysql 如何编写这个复杂的SQL查询?
我需要找到飞机的名称,以便所有经认证操作飞机的飞行员都能挣到60000多英镑 我写道:Mysql 如何编写这个复杂的SQL查询?,mysql,sql,join,Mysql,Sql,Join,我需要找到飞机的名称,以便所有经认证操作飞机的飞行员都能挣到60000多英镑 我写道: select aname from employee join certified on employee.eid=certified.eid join aircraft on certified.aid=aircraft.aid where salary>60000; 但是如果有任何飞行员的工资超过60000,它会返回aname,困难的是我需要找到所有飞行员的工资是否超过60000,然后才会显示a
select aname
from employee join certified
on employee.eid=certified.eid
join aircraft
on certified.aid=aircraft.aid
where salary>60000;
但是如果有任何飞行员的工资超过60000,它会返回aname,困难的是我需要找到所有飞行员的工资是否超过60000,然后才会显示aname。您可以只查找相反的情况-没有飞行员的工资低于60000:
SELECT
aname
FROM
Aircraft A
WHERE
NOT EXISTS
(
SELECT *
FROM Certified C
INNER JOIN Employee E ON
E.eid = C.eid AND
E.salary < 60000
WHERE C.aid = A.aid
)
你可以看看相反的情况——没有飞行员的收入低于60000:
SELECT
aname
FROM
Aircraft A
WHERE
NOT EXISTS
(
SELECT *
FROM Certified C
INNER JOIN Employee E ON
E.eid = C.eid AND
E.salary < 60000
WHERE C.aid = A.aid
)
挑选
阿纳姆
从…起
飞机A
哪里
存在
挑选*
来自认证C
内部连接雇员E ON
E.eid=C.eid和
E.工资>60000
其中C.aid=A.aid
选择
阿纳姆
从…起
飞机A
哪里
存在
挑选*
来自认证C
内部连接雇员E ON
E.eid=C.eid和
E.工资>60000
其中C.aid=A.aid
您可以使用WHERE。。在所有子查询中。检查文档:抱歉,更正了@pudding你可以在哪里使用。。在所有子查询中。检查文档:对不起,更正了@PuddingI,我打字更快了;非常感谢,这真的很有帮助。它证明了还有很多事情谷歌不能告诉你,但人们可以告诉你。再次感谢@TomHOne更多问题,我如何学会自己解决这些问题,您可以推荐任何文本@今天的问题只是让你的大脑习惯于以新的方式处理问题。我写了很多益智书此外,了解逻辑等价关系以及X和Y的倒数与非X或非Y的倒数也很有用;非常感谢,这真的很有帮助。它证明了还有很多事情谷歌不能告诉你,但人们可以告诉你。再次感谢@TomHOne更多问题,我如何学会自己解决这些问题,您可以推荐任何文本@今天的问题只是让你的大脑习惯于以新的方式处理问题。我写了很多益智书此外,了解逻辑等价关系以及X和Y与非X或非Y的反比也很有用。例如,在@Tom H的查询中,取所有没有员工的飞机名称在@Tom H的查询中,取所有没有员工的飞机名称