iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >SQL 基础之子查询(十一)
  • 340
分享到

SQL 基础之子查询(十一)

2024-04-02 19:04:59 340人浏览 八月长安
摘要

子查询:类型、语法、和注意事项使用子查询能解决哪些问题?子查询语法:select select_list from table where expr operator (selec

子查询:类型、语法、和注意事项


使用子查询能解决哪些问题?

SQL 基础之子查询(十一)


子查询语法:

select select_list from table where expr operator (select select_list from table);

  • 子查询(内查询)在主查询(外查询)之前执行。

  • 主查询使用子查询结果。

  • 位置:select,where,from,having


1、查询谁的工资比Abel高

select last_name, salary from employees 

where salary >

(select salary

from employees

where last_name = 'Abel');

SQL 基础之子查询(十一)


使用子查询注意事项

  • 子查询要包含在括号内。

  • 将子查询放在比较条件的右侧增强可读性(子查询可以出现在比较运算符的两侧)

  • 单行操作符对应单行子查询,多行操作符对应多行子查询


单行子查询:

– 子查询中的组函数

– HAVING 子句中的子查询


  • 只返回一行

  • 使用单行比较操作符


操作符含义
=等于
>大于
>=大于等于
<小于
<=小于等于
<>不等于


select last_name, job_id, salary from employees

where job_id  in  (select job_id from employees

where last_name like  'Taylor')

and salary in

(select salary

from employees

where last_name like 'Taylor');

SQL 基础之子查询(十一)


在子查询中使用组函数

select last_name, job_id, salary from employees where 

salary = (select min(salary) from employees);

SQL 基础之子查询(十一)



子查询中的HAVING 子句

  • 首先执行子查询

  • 向主查询中的 HAVING 子句返回结果

select department_id, min(salary)

from employees

group by department_id

having min(salary) >

(select min(salary)

from employees

where department_id = 50);

SQL 基础之子查询(十一)


多行子查询使用单行比较符,以下为错误写法

select employee_id, last_name

from employees

where salary =

(select min(salary)

from employees

group by department_id);


子查询中的空值问题

SQL 基础之子查询(十一)

select last_name, job_id from employees

where job_id =

(select job_id from employees

where last_name = 'haas');



多行子查询

– 使用 ALL 或 ANY


  • 返回多行。

  • 使用多行比较操作符。

操作符含义
IN等于列表中的任何一个值
ANY必须在=, !=, >, <, <=, >= 操作符之前使用,与列表中每个值进行比较,如果没有返回任何行,说明计算结果为FALSE
ALL必须在=, !=, >, <, <=, >=操作符之前使用,与列表中每个值进行比较,如果没有任何行返回,说明计算结果为TRUE


使用范例:

在多行子查询中使用 ANY 

select employee_id, last_name, job_id, salary

from employees  where salary < any

(select salary

from employees

where job_id = 'IT_PROG')

and job_id < > 'IT_PROG';

SQL 基础之子查询(十一)


在多行子查询中使用 ALL  操作符

select employee_id, last_name, job_id, salary

from employees

where salary < all

(select salary

from employees

where job_id = 'IT_PROG')

and job_id <> 'IT_PROG';

SQL 基础之子查询(十一)


子查询中的空值

select emp.last_name

from employees emp

where emp.employee_id not in

(select mgr.manager_id

from employees mgr);



1、HR 部门的同事想要你帮忙写一个 sql 语句,该 SQL 语句可以传入一个值(员工的 last_name),然后返回结果是该员工同一部门同事的 last_name 和 hire_date,且要求该员工不在返回结果中。

举个例子,如果用户输入”ZloTKEy”,结果就会返回除了 Zlotkey 之外的同一部门的其他同事的

last_name 和 hire_date.


select last_name,hire_date

from employees

where department_id =(select department_id from employees

where last_name= '&&enter_name')

and last_name < > '&enter_name';


2、请查询出所有高于平均工资的员工的 employee_id,last_name,salary,并将最终结果根据salary 降序排列。

select employee_id,last_name,salary 

from employees 

where salary > (select avg(salary) 

            from employees) 

order by salary;


3、请写一条 SQL 语句,要求查询出那些同一部门员工 last_name 里面包含字母”u”的员工的employee_id,last_name。

select employee_id,last_name from employees where department_id in (select department_id from employees where last_name like '%u%');



4、请帮助HR部门的同事查出所有部门location_id是1700的员工的last_name,department_id,job_id。

select last_name,department_id,job_id

from employees

where department_id in(select department_id

from departments

where location_id=1700);


让用户可以选择输入一个 location_id,然后输出结果。

select last_name,department_id,job_id

from employees

where department_id in(select department_id

from departments

where location_id=&enter_location);


5、请查出所有需要向 King 汇报的员工的 last_name 以及 salary

select last_name,salary,manager_id

from employees

where manager_id = (select employee_id

from employees

where last_name like 'King' and manager_id is null);


6、请查出所有是执行部(Executive)的员工的 department_id,last_name,job_id

select department_id,last_name,job_id

from employees

where department_id in(select department_id

from departments

where department_name like 'Executive');


7、请查出比 department_id 是 60 的任何员工薪水高的所有的员工的 last_name。

select department_id,last_name,salary from employees 

where salary > any 

(select salary from employees

where department_id=60);


8、查询所有高于平均工资,并且同一部门员工 last_name 里面包含字母”u”的员工的 employee_id,last_name,salary。

select employee_id,last_name,salary

from employees

where department_id in(select department_id

from employees

where last_name like '%u%')

and salary > (select avg(salary) from employees);


您可能感兴趣的文档:

--结束END--

本文标题: SQL 基础之子查询(十一)

本文链接: https://www.lsjlt.com/news/48485.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SQL 基础之子查询(十一)
    子查询:类型、语法、和注意事项使用子查询能解决哪些问题?子查询语法:select select_list from table where expr operator (selec...
    99+
    2024-04-02
  • SQL 基础之使用子查询检索数据(二十二)
    多列子查询where (manager_id, department_id) in子查询100 90102 60124 50主查询的每行都与多行和多列的子查询进行比较列的比较多列的比较,包含子查询...
    99+
    2024-04-02
  • MySQL基础-子查询
    文章目录 MySQL基础-子查询一、子查询概念1、什么是子查询2、子查询的分类 二、单行子查询1、单行比较操作符2、基本子查询3、HAVING 子查询4、CASE中的子查询5、子查询其他问题 三、多行子查询1、多...
    99+
    2023-12-22
    mysql 数据库 sql
  • SQL 基础之时区函数(二十一)
    使用数据类型来存储两个日期时间值之间的时间差使用下列的日期时间函数:– CURRENT_DATE– CURRENT_TIMESTAMP– LOCALTIMESTAMP– DBTIMEZONE– SESSIO...
    99+
    2024-04-02
  • MySQL基础篇 | 连接查询、子查询(嵌套)
    ✅作者简介:大家好我是@每天都要敲代码,希望一起努力,一起进步! 📃个人主页:@每天都要敲代码的个人主页 🔥系列专栏:MySQL专栏 目录 一:连接查询 1. 连接查询原理以及笛卡尔积现象 2. 内连接...
    99+
    2023-10-23
    数据库 sql
  • SQL基础的查询语句
    目录一、基础SELECT语句1、查询指定字段3、设定别名4、常数的查询5、表达式的查询6、去重7、条件查询7.1 单条件查询7.2 多条件查询7.3 指定范围查询7.4 模糊...
    99+
    2024-04-02
  • SQL基础查询和LINQ集成化查询
    SELECT SELECT 语句用于从表中选取数据,是 SQL 最基本的操作之一。 通过 SELECT 查询的结果被存储在一个结果表中(称为结果集)。 SQL SELECT ...
    99+
    2024-04-02
  • SQL 基础之DML 数据处理(十三)
    数据操作语言DML 可以在下列条件下执行:– 向表中插入数据– 修改现存数据– 删除现存数据事务是由完成若干项工作的DML语句组成的表中添加新的数据– INSERT 语句使用 INSERT 语句向表中插入数...
    99+
    2024-04-02
  • MongoDB基础之查询文档
    目录一、查询文档实例二、条件操作符MongoDB 与 RDBMS Where 语句比较举例:使用 (<) 和 (>) 查询 - $lt 和 $gt三、AND 条...
    99+
    2024-04-02
  • MySQL查询学习之基础查询操作
    前言 MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:...
    99+
    2024-04-02
  • 【SQL刷题】Day2----SQL语法基础查询
    Day2----SQL语法基础查询 博主昵称:跳楼梯企鹅 博主主页面链接:博主主页传送门 博主专栏页面连接:专栏传送门--网路安全技术 创作初心:本博客的初心为与技术朋友们相互交流,每个人的技术都存在短板,博主也是一样,虚心求教,希望...
    99+
    2023-09-03
    sql 数据库 mysql
  • Django基础之(十)DRF
    简介 官方文档 Requirements REST framework requires the following: Python (2.7, 3.4, 3.5, 3.6, 3.7) Django (1.11, 2.0, 2.1) ...
    99+
    2023-01-31
    基础 Django DRF
  • Mysql数据库理论基础之五--SELECT单多表查询、子查询、别名
    一、简介由MySQL AB公司开发,是最流行的开放源码SQL数据库管理系统,主要特点:1、是一种数据库管理系统2、是一种关联数据库管理系统3、是一种开放源码软件,且有大量可用的共享MySQL软件4、MySQ...
    99+
    2024-04-02
  • SQL 基础之索引、闪回、临时表(十八)
    创建索引:自动– 创建 PRIMARY KEY– 创建 UNIQUE KEY手动– CREATE INDEX 语句– CREATE TABLE 语句create table  语句中 create...
    99+
    2024-04-02
  • SQL基础的查询语句有哪些
    这篇文章主要介绍“SQL基础的查询语句有哪些”,在日常操作中,相信很多人在SQL基础的查询语句有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SQL基础的查询语句有哪些”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-25
  • SQL基础查询和LINQ集成化查询是怎样的
    SQL基础查询和LINQ集成化查询是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。SELECTSELECT 语句用于从表中选取数据,是 SQL 最...
    99+
    2023-06-26
  • sql查询之模糊查询
    like 这里可以参照一下菜鸟教程、mysql like一般用于字符串查询%代表半匹配查询 SELECT * FROM studentWHERE `name` = "孙悟空";SELE...
    99+
    2023-09-03
    sql 数据库 mysql
  • mysql json 基础查询
    mysq json 主要有JSON 对象(json object )和JSON 数组(json array )两种类型 $表示整个json对象,在索引数据时用下标(对于json array,从0开始)或键值(对于json object,含有...
    99+
    2023-08-16
    mysql java
  • MySQL基础之多表查询案例分享
    目录多表查询案例数据环境准备查询员工的姓名、年龄、职位、部门信息 (隐式内连接)查询年龄小于30岁的员工的姓名、年龄、职位、部门信息(显式内连接)查询拥有员工的部门ID、部门名称查询所有年龄大于40岁的员工, 及其归属的...
    99+
    2024-04-02
  • Oracle 查询转换之子查询展开
    概念:子查询展开(Subquery Unnesting)是优化器处理带子查询的目标sql的一种优化手段,它是指优化器不再将目标sql中子查询当作一个独立的处理单元来单独执行,而是将该子查询转换为它自身和外部...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作