MySQL-子查询

发表于 MySQL 分类,标签: MySQL
-- 子查询
-- 某些情况下,当进行查询的时候,需要的条件是另外一个select语句的结果,这个时候就要用到子查询。
-- 为了给主查询(外部查询)提供数据而首先执行的查询(内部查询)被叫做子查询。
-- 用于子查询的关键字主要包括:IN,NOT IN,EXISTS,NOT EXISTS,=,>,<,<>等
-- 一般说子查询的效率低于连接查询。表连接都可以用子查询替换,但是反过来就不一定
--  (就是说连接查询能干的事,子查询全能干,但是子查询能干的事,连接查询不一定能干)


SELECT * FROM emp WHERE salary IN (SELECT salary FROM emp );
SELECT * FROM emp WHERE salary = (SELECT MAX(salary) FROM emp );
SELECT * FROM emp WHERE salary = (SELECT MIN(salary) FROM emp );
SELECT * FROM emp WHERE salary = (SELECT MAX(salary) FROM emp ) OR salary = (SELECT MIN(salary) FROM emp );

SELECT AVG(salary),dept_id FROM emp WHERE dept_id IS NOT NULL GROUP BY dept_id;
SELECT dept.description SELECT dept_id FROM emp WHERE dept_id IS NOT NULL GROUP BY dept_id;
SELECT dept.ren_name,AVG(salary) FROM emp,dept WHERE emp.dept_id IS NOT NULL GROUP BY emp.dept_id;
SELECT emp.ren_name,emp.salary,FROM emp WHERE emp.salary > (SELECT AVG(salary) FROM emp);


0 篇评论

发表我的评论