如何在 SQL 中编写连接查询

玉阮

问题:

  1. 给定 Employee 和 AnnualReviews 表,编写一个查询以返回从未有过按 HireDate 排序的评论的所有员工。
  2. 编写一个查询来计算仍在公司工作的最高和最低任期员工之间的差异(以天为单位)
  3. 给定上面的员工表,编写一个查询来计算公司在没有雇用或解雇任何人的情况下最长的时间(以天为单位)

在此处输入图像描述

这是我在问题 1 中的查询,请帮助更正并请帮助我在问题 2,3 中编写查询:

Select *,
       annualreviews.reviewdate
From employees
Join annualreviews
On employees.ID = annualreviews.ID
Where reviewdate is null;
托尔斯滕·凯特纳

您的错误 #1:您正在寻找没有日期的评论,而您应该寻找缺失的评论。[NOT] IN我们通常使用or来检查存在性[NOT] EXISTS,而不是使用连接。

您的错误 #2:您使用错误的 ID 加入。评论 ID 不是员工 ID,因此:employees.ID = annualreviews.ID应该敲响警钟。

您正在寻找的简单查询:

select *
from employees
where id not in (select empid from annualreviews)
order by hiredate;

同样的事情NOT EXISTS

select *
from employees e
where not exists (select null from annualreviews r where r.empid = e.id)
order by hiredate;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章