MYSQL学习之路——子查询

通过本章学习,您将可以:

  • 描述子查询可以解决的问题
  • 定义子查询
  • 列出子查询的类型
  • 书写单行子查询和多行子查询

注意事项:

  • 子查询要包含在括号内
  • 将子查询放在比较条件的右侧
  • 单行操作符对应单行子查询,多行操作符对应多行子查询
SELECT select_list
FROM table
WHERE expr operator(
SELECT select_list 
FROM table
);
  • 子查询(内查询)在主查询之前一次执行完成
  • 子查询的结果被主查询(外查询)使用

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

SELECT first_name,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
);

#查询最低工资大于50号部门最低工资的部门id和其最低工资(分组)

SELECT department_id,min(salary)
FROM employees
GROUP BY department_id
HAVING min(salary)>(
SELECT min(salary)
FROM employees
WHERE depatment_id=50
);

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

SELECT first_name
FROM employees
WHERE department_id IN(
SELECT deparment_id
FROM departments
WHERE location_id = 1400 
OR location_id = 1700
);

#查询每个部门的平均工资的工资等级

SELECT grade_level,a,d
FROM(
SELECT AVG(salary) AS a,department_id AS d
FROM employees
GROUP BY department_id) AS m
INNER JOIN job_grades AS j
ON m.a BETWEEN j.lowest_sal AND j.highest_sal;

#引入案例:查询部门编号>90或邮箱包含a的员工信息

SELECT * 
FROM employees
WHERE department_id>90
AND email LIKE '%A%' or department_id>90;
/*****************************************/
SELECT *
FROM employees
WHERE department_id>90
UNION
SELECT * 
FROM employees 
WHERE email LIKE '%A%';


 

猜你喜欢

转载自blog.csdn.net/CSDN_XUWENHAO/article/details/88760404