SQL 中 select嵌套查询例子

本文提供了SQL单行及多行子查询的实际用例,包括基于特定员工部门编号的查询及跨部门薪资比较等复杂场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



原文摘自:http://leezk.com/sql-select.html


       --单行子查询

        select ename,sal,deptno from emp where deptno=(select deptno from emp where ename='SCOTT')
        select ename,sal,deptno from emp where deptno=(select deptno from emp where ename = 'SCOTT')
        --多行子查询
        select ename,sal,deptno,job from emp where job in (select distinct job from emp where deptno = 10)
        select ename,sal,deptno,job from emp where sal>all(select sal from emp where deptno = 30)
        select ename,sal from emp where deptno = 30
        select ename,sal,deptno,job from emp where sal>any(select sal from emp where deptno = 30)

 
### SQL嵌套 SELECT 语句的使用 #### 使用场景与基本语法 在 SQL 查询中,可以将一个 `SELECT` 语句作为另一个 `SELECT` 语句的一部分来使用。这种结构被称为子查询或内层查询。外层查询依赖于子查询的结果来进行进一步的数据筛选或计算。 当在外层查询的条件部分使用子查询时,通常会配合 `IN`, `NOT IN`, `EXISTS`, 或者比较运算符 (`=`, `<`, `>`) 来实现逻辑判断[^3]。 #### 子查询的位置 子查询可以在多个位置出现: - **FROM** 后面:此时子查询作为一个派生表存在; - **WHERE** 或 **HAVING** 子句中的表达式里; - **SELECT** 列表项中; 例如,在 `WHERE` 子句中通过 `IN` 关键字指定某个字段值属于由子查询返回的一组特定值之一的情况如下所示[^4]: ```sql SELECT column_name(s) FROM table_name WHERE column_name IN (SELECT column_name FROM another_table); ``` 对于更复杂的多列匹配情况,则可以通过组合多个子查询或者采用连接操作替代。 #### 实际案例分析 考虑这样一个例子,统计各部门活动数量并最终汇总成一张新表的形式展示出来。这里先利用内部查询按部门分组计数得到临时结果集,再基于此构建外部查询完成总计数功能[^5]: ```sql SELECT SUM(cc) AS total_activities FROM ( SELECT COUNT(id) AS cc, department FROM ldr_activity GROUP BY department ) AS dept_counts; ``` 上述代码片段展示了如何创建一个名为 `dept_counts` 的虚拟表格(即派生表),它包含了每个部门对应的活动次数信息。接着对外部查询求和即可获得总的活动数目。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值