文档详情

oracle 子查询例题综合.doc

发布:2017-12-18约7.69千字共12页下载文档
文本预览下载声明
1 子查询,把一个查询结果当做一张表然后对这张表进行查询或者把它看做查询条件来查询 SELECT select_list FROM table WHERE expr operator (SELECT select_list FROM table); 子查询 (内查询) 在主查询之前一次执行完成 子查询的结果被主查询使用 (外查询) 查询工资比Abel高的员工 SELECT last_name FROM employees WHERE salary (SELECT salary FROM employees WHERE last_name = Abel);//看成一张表 查询工资最低的员工 select * from employees where salary=( select MIN(salary) from employees ); 查询和149号员工同一部门的其他员工 select * from employees where department_id=( select department_id from employees where employee_id=149) and employee_id149 查询比202员工的部门经理工资还要高的员工 select manager_id from departments where department_id=( select department_id from employees where employee_id=202 ) 子查询注意事项 子查询要包含在括号内。 将子查询放在比较条件的右侧。 除非进行Top-N 分析,否则不要在子查询中使用ORDER BY 子句。 单行操作符对应单行子查询,多行操作符对应多行子查询。 2 单行子查询 只返回一行。 使用单行比较操作符。 多行子查询必须用in 单行查询可以= 可以用in 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); 在子查询中使用组函数 SELECT last_name, job_id, salary FROM employees WHERE salary = (SELECT MIN(salary) FROM employees); 查询员工编号,姓名,工资,工资总和 select employee_id,last_name,salary,(select SUM(salary) from employees) as 工资总和 from employees 首先执行子查询。 向主查询中的HAVING 子句返回结果 SELECT department_id, MIN(salary) FROM employees GROUP BY department_id HAVING MIN(salary) (SELECT MIN(salary) FROM employees WHERE department_id = 50); 多行子查询使用单行比较符 gropu不对 SELECT employee_id, last_name FROM employees WHERE salary = (SELECT MIN(salary) FROM employees GROUP BY department_id); 子查询中的空值问题 子查询不返回任何行 SELECT last_name, job_id FROM employees WHERE job_id =
显示全部
相似文档