暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

oracle select 语句一例

手机用户7421 2024-08-10
126

select last_name from employees join departments on employees.department_id = departments.department_id where department_name='Executive'; 

select last_name from employees where department_id in (select department_id from departments where department_name='Executive');


这两个 SQL 语句的目标都是返回在 'Executive' 部门工作的员工的 last_name。让我们逐一分析这两个查询。

第一个查询使用了内连接(JOIN):


1SELECT last_name 
2FROM employees 
3JOIN departments 
4ON employees.department_id = departments.department_id 
5WHERE department_name = 'Executive';

这个查询直接从 departments 表中筛选出 department_name 为 'Executive' 的记录,并且只返回那些在 employeesdepartments 表中匹配到的记录。

第二个查询使用了一个子查询(IN 子句):


1SELECT last_name 
2FROM employees 
3WHERE department_id IN (
4    SELECT department_id 
5    FROM departments 
6    WHERE department_name = 'Executive'
7);

这个查询首先找出所有 department_name 为 'Executive' 的 department_id,然后从 employees 表中选择那些 department_id 在这个列表中的员工。

这两个语句的逻辑是等效的,都是先找出department_name'Executive'的部门的department_id,然后在employees表中根据department_id找出对应的员工的last_name


如果有两个部门名称是'Executive',只要它们的department_id是不同的,那么这两个语句也会正常运行并产生正确的结果,因为查询是基于department_id进行的,而不是部门名称的唯一性。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论