SQL语句(五)子查询

您所在的位置:网站首页 条件查询的sql语句 SQL语句(五)子查询

SQL语句(五)子查询

#SQL语句(五)子查询| 来源: 网络整理| 查看: 265

文章目录 一、子查询含义二、子查询分类按子查询的位置分按结果集的行列数不同分 三、WHERE后面的子查询1. 标量子查询2. 列子查询(多行子查询)3. 行子查询(结果为一行多列或多行多列) 四 、SELECT后面的子查询五、FROM后面的子查询六、EXISTS后面的子查询EXISTS语句的作用简单应用

一、子查询含义

出现在其他语句中的select语句,称为子查询或内查询。

二、子查询分类 按子查询的位置分 位置支持的查询SELECT后面支持标量子查询FROM后面支持表子查询WHERE或HAVING后面支持标量子查询、列子查询和行子查询EXISTS后面支持表子查询 按结果集的行列数不同分 分类类型结果集行数标量子查询一行一列列子查询一列多行行子查询一行多列表子查询多行多列 三、WHERE后面的子查询 1. 标量子查询

tips: 单行操作符(> < =等)只能搭配标量子查询

查询工资比Abel高的所有员工信息

①查询Abel的工资

SELECT salary FROM employees WHERE last_name = 'Abel';

结果为单行单列: 在这里插入图片描述 ②查询员工的信息,满足salary>① 在这里插入图片描述 查询公司工资最少的员工的last_name, job_id, salary: ①查询MIN(salary)

SELECT MIN(salary) FROM employees;

②查询符号这项工资的员工,salary=①

SELECT last_name, job_id, salary FROM employees WHERE salary=( SELECT MIN(salary) FROM employees );

查询job_id与141号员工相同,salary比143号员工多的员工的姓名,job_id和工资 ①141号员工的job_id

SELECT job_id FROM employees WHERE employee_id=141;

②143号员工的salary

SELECT salary FROM employees WHERE employee_id=143;

③ 结果集映射到last_name, job_id, salary,且满足条件 job_id=①和salary>②

SELECT last_name, job_id, salary FROM employees WHERE job_id=( SELECT job_id FROM employees WHERE employee_id=141 )AND salary>( SELECT salary FROM employees WHERE employee_id=143 ); 2. 列子查询(多行子查询)

使用多行操作符:

IN/NOT IN IN()等价于=ANY() NOT IN()等价于ALL() ANY/SOMEALL

返回location_id是1400或1700的部门中的所有员工姓名

使用联表查询操作得到结果:

SELECT last_name FROM departments d INNER JOIN employees e ON d.department_id = e.department_id WHERE d.location_id IN (1400, 1700);

使用列子查询得到结果: ①查询location_id是1400或1700的所有部门的编号

SELECT department_id FROM departments WHERE location_id IN (1400, 1700);

在这里插入图片描述

②查询满足部门编号在列表内的员工的姓名

SELECT last_name FROM employees WHERE department_id IN( SELECT department_id FROM departments WHERE location_id IN (1400, 1700) );

查询其他工种中的 比job_id为IT_PROG工种的任一员工工资低的 员工的:工号,姓名

①获取IT_PROG工种所有工资

SELECT DISTINCT salary FROM employees WHERE job_id='IT_PROG'

②查询其他部门中符合条件salary



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3