【问题标题】:Subquery to find employees with same job as the employee with name starting with J?子查询查找与姓名以 J 开头的员工具有相同工作的员工?
【发布时间】:2022-01-14 17:39:49
【问题描述】:

我必须创建一个查询,列出姓氏、edlevel、工作、截至 2002 年 1 月 1 日他们工作的年数(提示:年份函数 2002 年 1 月 1 日减去雇用日期)以及他们的薪水。 获取与以 J 开头(来自员工的提示子查询)和hiredate

我的查询除了获取与以 J 开头的员工具有相同工作的员工外,还有效

SELECT * FROM EMPLOYEE;

Sample of results from SELECT * FROM EMPLOYEE

SELECT * FROM EMPLOYEE WHERE FIRSTNME LIKE "J%";

All results from SELECT * FROM EMPLOYEE WHERE FIRSTNME LIKE "J%"

这是我目前的查询

    SELECT EMP.FIRSTNME,EMP.LASTNAME, EMP.EDLEVEL, EMP.JOB, 
    FLOOR(DATEDIFF("2002-01-01",EMP.HIREDATE) / 365) AS YearsWorked, 
    EMP.SALARY 
    FROM EMPLOYEE EMP
    WHERE EMP.HIREDATE < "2002-01-01" 
    AND (SELECT EMP2.JOB FROM EMPLOYEE EMP2 WHERE EMP2.FIRSTNME LIKE'J%') 
    ORDER BY EMP.SALARY DESC;

此查询不返回任何结果,如果我删除子查询,它会返回所需的结果,而不是我从子查询中需要的结果。

【问题讨论】:

    标签: mysql mysql-workbench


    【解决方案1】:

    稍微修复一下就会有帮助

    SELECT EMP.FIRSTNME, EMP.LASTNAME, EMP.EDLEVEL, EMP.JOB, 
    FLOOR(DATEDIFF("2002-01-01",EMP.HIREDATE) / 365) AS YearsWorked, 
    EMP.SALARY 
    FROM EMPLOYEE EMP
    WHERE EMP.HIREDATE < "2002-01-01" 
    AND EMP.JOB in (SELECT EMP2.JOB FROM EMPLOYEE EMP2 WHERE EMP2.FIRSTNME LIKE'J%') 
    ORDER BY EMP.SALARY DESC;
    

    您必须在子查询之前的 where 中使用“EMP.JOB in”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-25
      • 1970-01-01
      • 2022-11-18
      • 2020-08-21
      相关资源
      最近更新 更多