"查询工资大于平均工资的员工name"# 正常思路:可惜:where后面不能使用分组函数SELECT salary,last_name
FROM employees
WHERE salary >AVG(salary);# 错误写法# 正确的写法:使用子查询,子查询返回一个单号单列的数据# salary字段中每个数据都会与返回的avg比较,满足筛选条件的就显示查询SELECT salary,last_name
FROM employees
WHERE salary >(SELECTAVG(salary)from employees
);"查询工资大于xx部门的工资最小值的员工信息":
select*from 表
where 工资 >(selectmin(工资)from 表
where 部门 ='xx';)"查询员工编号最小工资最高的员工信息":
select*from 表
where id =(selectmin(id)from 表
)and 工资 =(selectmax(工资)from 表
);'简洁写法:'select*from 表
where(id,工资)=(selectmin(id),max(工资)from 表
);
“查询城市id是100或者200的城市的员工信息”:子查询返回一列多个数据的;in
# in不能配合><=使用,可以使用not in;# 员工表没有城市id,城市id在城市表,子查询结果不止一个数据的"查询城市id是100或者200的城市的员工信息":
select*from 员工表
where 城市 in(select 城市
from 城市表
where 城市id in(100,200));
“查询其他部门比xx部门的员工任意工资低的员工信息”:any,要配合><=使用
"查询其他部门比xx部门的员工任意工资低的员工信息":
select*from 表
where 工资 <any(select 工资
from 表
where 部门 ='xxx';)'任意工资都低 等价于 比最大工资都要低'select*from 表
where 工资 <(selectmax(工资)from 表
where 部门 ='xxx';);any:配合><使用,也就相当于min,max,就变成了一个单号单列的数据了;配合=使用,与in意思一样
“查询其他部门比xxx部门的员工的工资都低的员工信息”:all与any相似,同上
"查询其他部门比xxx部门的员工的工资都低的员工信息":
select*from 表
where 工资 <all(select 工资
from 表
where 部门 ='xxx';);
同any:比所有的都要小,就是比最小的都小;