17 SQL语言——子查询与关键字in

子查询

单行子查询

--使用时机:筛选条件并不明确需要执行一次查询,并且查询结果只有一个字段并只有一个值
--注意:where子句中允许出现查询语句,该查询语句称为子查询
--例1:查询所有比雇员‘CLARK’工资高的员工信息。
--普通两步:
select sal from emp where ename=‘CLARK‘;--得到2450
select* from emp where sal>2450;
--使用子查询:
select * from emp where sal>(select sal from emp where ename=‘CLARK‘);
--例2:查询工资高于平均工资的员工的名字和工资
select ename,sal from emp where sal>(select avg(sal) from emp);
--例3:查询和scott属于同一部门且工资比他低的员工资料
select * from emp where sal<(select sal from emp where ename=‘SCOTT‘);
--例4:查询工资最高的员工资料
select * from emp where sal=(select max(sal) from emp);
--例5:查询职务和scott相同,雇佣时间早的员工信息
select * from emp where hiredate<(select hiredate from emp where ename=‘SCOTT‘);
--例6:查询工资比scott高或者雇佣时间早的员工编号和姓名
select *
from emp
where hiredate<(select hiredate from emp where ename=‘SCOTT‘)
or (sal>(select sal from emp where ename=‘SCOTT‘));
;

多行子查询

--any任意一个
--all所有
--例7:查询工资高于 任何一个 CLERK的所有员工的员工信息
  --单行子查询方式:

  • select * from emp where sal>(select min(sal) from emp where job=‘CLERK‘) order by empno;

--多行子查询方式:

  • select * from emp where sal> any(select sal from emp where job=‘CLERK‘)order by empno;

--例8:查询工资高于 所有 SALESMAN的员工信息
  --单行子查询方式

  • select * from emp where sal>(select max(sal) from emp where job=‘SALESMAN‘) order by empno;

--多行子查询方式

  • select * from emp where sal >all(select sal from emp where job=‘SALESMAN‘) order by empno;

in关键字

in相当于 =any

例如   select * from emp where deptno in(10,20);

原文地址:https://www.cnblogs.com/Scorpicat/p/12299256.html

时间: 2024-11-12 00:55:24

17 SQL语言——子查询与关键字in的相关文章

SQL Fundamentals: 子查询 || 行列转换(PIVOT,UNPIVOT,DECODE),设置数据层次(LEVEL...CONNECT BY)

SQL Fundamentals || Oracle SQL语言 子查询(基础) 1.认识子查询 2.WHERE子句中使用子查询 3.在HAVING子句中使用子查询 4.在FROM子句中使用子查询 5.在SELECT子句中使用子查询 6.WITH子句 子查询(进阶) 7.分析函数 8.行列转换 9.设置数据层次 八.行列转换 pivot和unpivot函数是Oracle 11g增加的新函数,利用此函数可以实现行列转换操作 按照原始方式实现,使用通用函数中的DECODE()函数 列字段的处理 SQ

Oracle SQL语言之查询语句_超越OCP精通Oracle视频教程培训29

Oracle SQL语言之查询语句_超越OCP精通Oracle视频教程培训29 本课程介绍: Oracle视频教程,风哥本套oracle教程培训是<<Oracle数据库SQL语言实战培训教程>>的第4/5套:Oracle SQL语言之查询语句.主要学习Oracle数据库SQL查询限制排序.Oracle SQL联接查询.Oracle SQL子查询等. 视频学习地址: http://edu.51cto.com/course/course_id-8047.html Oracle SQL语

SQL用子查询结果更新多个字段

作者:iamlasong 要求:表格的内容需要变更,变更的内容放在一个临时表中,用SQL语句更新正式表中多个字段. 如果更新一个字段,直接用字段名=子查询就可以了,多个字段更新,将字段在括号中并列写出即可,如下: update tb_jg t set t.jgfl = 'sd', (     t.zj_code, t.zj_mc) = (select a.zj_code, a.zj_mc from song_temp a where a.zj_code = t.zj_code) where ex

SQL优化-子查询&case&limit

load 导数据.notesdxtdb 数据库    total_time  475.60秒. 监控服务:仓颉 select t_.*, a.name acquirer_name,m.merchant_name, am.merchant_name acq_merchant_name,                   ag.name agency_name            from              (            select t.* ,               

SQL 基础--&gt; 子查询

--========================= --SQL 基础--> 子查询 --========================= 一.子查询 子查询就是位于SELECT.UPDATE.或DELETE语句中内部的查询 二.子查询的分类 单行子查询 返回零行或一行 多行子查询 返回一行或多行 多列子查询 返回多列 相关子查询 引用外部SQL语句中的一列或多列 嵌套子查询 位于其它子查询中的查询 三.子查询语法 SQL> SELECT select_list FROM table WH

第7讲-SQL语言复杂查询之视图

三级模式两层映像:对应概念模式的数据在SQL中被称为基本表,而对应外模式的数据称为视图.视图不仅包含外模式,而且包含E-C映像. SQL数据库结构: 1)基本表是实际存储文件的表,基本表中的数据时需要存储的. 2)视图在SQL中只存储其由基本表导出视图的所有公式,即由基本表产生视图的映像信息.视图并不存储数据. 3)对视图数据的更改最终要反映在对基本表的更改上. 1.定义视图 Create View view_name 列名1[...] as (子查询[with check option]);

SQL Server子查询填充DataSet时报500内部错误的解决办法

运行环境为Visual Studio 2010,数据库为SQL Server 2008. 执行下面SQL语句 SELECT SubsiteId, SubsiteTitle, count(CollectionID) CollectionNumber,count(LName) PlantNumber FROM (SELECT DISTINCT SubsiteId, SubsiteTitle, CollectionID, LName, CName FROM Cumplag_Garden_Plants

ThinkPHP3.2 SQL alias 子查询

SELECT info_key, info_value, info_status, edit_time FROM (SELECT * FROM `detail` WHERE login = '[email protected]' ORDER BY edit_time DESC  ) AS aaa GROUP BY info_key 希望通过Thinkphp实现基于alias的子查询,终于参考下面这个文章实现了. http://www.thinkphp.cn/update/122.html 如下是

sql server——子查询

简述: 在查询语句中包含着有另外一条查询语句,被包含的查询语句称为子查询,包含着子查询的查询就称为父查询. 总之,子查询就是在查询语句里嵌套一条或者多条查询语句. 常用子查询分类: 一.独立子查询 特征:子查询语句可以独立运行 二.相关子查询 select * from student where majorId = (select majorId from major where majorId=student.majorId) 特征:子查询中引用了父查询中的字段,依赖于父查询 子查询的使用