带有 JOIN 和 WHERE 子句的 SQL 语句
Posted
技术标签:
【中文标题】带有 JOIN 和 WHERE 子句的 SQL 语句【英文标题】:SQL statement with JOIN and WHERE clause 【发布时间】:2015-09-28 18:57:15 【问题描述】:我是 SQL 新手,我试图用两个表 Employee 和 Department 来解决这个问题。我想显示“人力资源”和“销售”部门的所有员工的姓名。 表是 Employee (emp_id, emp_name, dept_id) 和 Department (dept_id, dept_name)。
谢谢!
【问题讨论】:
下次你应该表现出你自己的一些努力。一定有一些你自己有的想法由于某种原因没有奏效。或者你还没有尝试过任何东西? 就像我写的那样,我在问这里之前尝试了这些问题。从下次开始,我会牢记您的指示。无论如何,谢谢! 【参考方案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
子句限制属于HR
和Sales
部门的员工。
【讨论】:
谢谢兄弟!那行得通,我实际上对这个问题中的“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'
【讨论】:
以上是关于带有 JOIN 和 WHERE 子句的 SQL 语句的主要内容,如果未能解决你的问题,请参考以下文章
带有 WHERE 子句的 GROUP BY 以及 sql 中的 OR 的 LEFT JOIN
使用 wpdb prepare 安全地收集带有“join”的“where”子句数组
带有 LEFT JOIN 和 MAX 的 LibreOffice HSQLDB WHERE 子句?
SQL语句中,为啥where子句不能使用列别名,而order by却可以?