【问题标题】:SQL statement with JOIN and WHERE clause带有 JOIN 和 WHERE 子句的 SQL 语句
【发布时间】:2015-09-28 18:57:15
【问题描述】:

我是 SQL 新手,我试图用两个表 Employee 和 Department 来解决这个问题。我想显示“人力资源”和“销售”部门的所有员工的姓名。 表是 Employee (emp_id, emp_name, dept_id)Department (dept_id, dept_name)

谢谢!

【问题讨论】:

  • 下次你应该表现出你自己的一些努力。一定有一些你自己有的想法由于某种原因没有奏效。或者你还没有尝试过任何东西
  • 就像我写的那样,我在问这里之前尝试了这些问题。从下次开始,我会牢记您的指示。无论如何,谢谢!

标签: mysql


【解决方案1】:

试试这个:

Select e.emp_name from 
Employee e inner join Department d
on e.dept_id = d.dept_id
Where d.dept_name in ('HR','Sales');

此查询将比较Employee 表和Department 表的dept_id。那些匹配的值将被返回。然后在所有字段中选择emp_name 并使用where 子句限制属于HRSales 部门的员工。

【讨论】:

  • 谢谢兄弟!那行得通,我实际上对这个问题中的“where”子句感到困惑。谢谢
  • 不客气:) 如果有用,请点赞并接受答案:)
  • 很抱歉再次打扰您,实际上我正在尝试使用不同的 scnerios 但使用相同的表来探索问题,并遇到了一些不同类型的问题。如何显示所有员工人数超过 10 人的部门名称。谢谢!
  • 试试这个:Select d.dept_name from Employee e inner join Department d on e.dept_id = d.dept_id group by d.dept_name with count(*) > 20
  • @user2439492:这是一个完全不同的问题。先尝试自己解决。如果它不起作用,请提出一个新问题,说明您尝试了什么以及卡在哪里。
【解决方案2】:

由于您只想显示员工数据,因此只能从该表中进行选择。剩下的就是标准。您希望他们的部门是“人力资源”或“销售”,因此直接编写此内容的方式是 IN 子句(您也可以使用 EXISTS 子句):

select emp_name
from employee
where dept_id in 
(
  select dept_id 
  from department
  where dept_name in ('HR', 'Sales')
);

我认为这比先加入表格更容易阅读,只使用一个作为另一个过滤器。

【讨论】:

    【解决方案3】:
    select Employee.emp_name [Emplyee Name] from Employee inner join Department on Department.dept_id=Emplyee.emp_id where Department.dept_name='HR'
    

    【讨论】:

      【解决方案4】:

      你可以这样,

      SELECT [emp_name] FROM [dbo].[Employee] AS E
      INNER JOIN [dbo].[Department] AS D
      ON D.dept_id=E.dept_id
      WHERE D.dept_name='HR' OR D.dept_name='Sales'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-12-26
        • 1970-01-01
        • 1970-01-01
        • 2017-05-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多