欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > MySQL子查询之where后的列子查询和行子查询

MySQL子查询之where后的列子查询和行子查询

2025/2/22 2:05:05 来源:https://blog.csdn.net/weixin_43227851/article/details/144278313  浏览:    关键词:MySQL子查询之where后的列子查询和行子查询

where后面的列子查询(多行子查询)

首先来看一下多行操作符

in/not in:等于列表中的任意一个

a in(10,20,30); 可以替换 a=10 or a=20 or a=30;

any/some:和子查询返回的某一个值比较

a > any(10,20,30); 可以替换 a > min(10,20,30);

all:和子查询返回的所有值比较

a > all(10,20,30); 可以替换 a > max(10,20,30);

a >10 and a>20 and a>30

案例1:

返回location_id是14000或17000的部门中的所有员工的名字

select last_name from employees
where department_id in (select department_id from departments
where location_id in (14000,17000));

案例2:

查询其他工种中比job_id为'IT_PROG'的员工某一工资低的员工的员工号,姓名,job_id和salary

SELECT employee_id,last_name,job_id,salary FROM employees
WHERE salary < ANY(SELECT distinct salary FROM employees WHERE job_id='IT_PROG') and job_id<>'IT_PROG';

案例3:

查询其他工种中比job_id为'IT_PROG'的员工所有工资低的员工的员工号,姓名,job_id和salary

SELECT employee_id,last_name,job_id,salary FROM employees
WHERE salary < all(SELECT distinct salary FROM employees WHERE job_id='IT_PROG') and job_id<>'IT_PROG';

where后面的行子查询(一行多列)

案例:

查询员工编号最小并且工资最高的员工信息

select * from employees
where
employee_id = (select min(employee_id) from employees)
and
salary = (select max(salary) from employees);

行子查询的写法:

下面是行子查询的写法(用的很少,了解就可以)

select * from employees
where (employee_id,salary)=(
select min(employee_id) , max(salary) from employees
);

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词