MySQL查询其他内容

子查询

定义:select 语句嵌套 select 语句被称为子查询;
注意:select子句可出现在select、from、where关键字后面,如下:
select … (select)…【使用较少,了解即可】
from …(select)…
where …(select)…

可以将select语句查询出的数据看做是一张新的表。

找出薪水比公司平均薪水高的员工,要求显示员工名和薪水:

select ename,sal from emp where sal > (select avg(sal) from emp);

找出每个部门的平均薪水,并且要求显示平均薪水的薪水等级:

SELECT 
    t.deptno, t.avgsal, s.grade
FROM
    salgrade s
        JOIN
    (SELECT 
        deptno, AVG(sal) AS avgsal
    FROM
        emp
    GROUP BY deptno) t ON t.avgsal BETWEEN s.losal AND s.HISAL
ORDER BY t.deptno;

使用union合并结果

将查询的结果集合并,合并结果集时查询字段的个数必须一致。

查询出job为MANAGER和SALESMAN的员工:

SELECT 
    empno, ename, job
FROM
    emp
WHERE
    job = 'MANAGER' 
UNION 
SELECT 
    empno, ename, job
FROM
    emp
WHERE
    job = 'SALESMAN';

limit

作用:获取一表前几条戒中间某几行数据,主要用来分页处理,limit关键字只在MySQL中起作用。

用法:limit 起始下标m,长度n,
m:记录开始的index,默认从 0 开始,表示第一条记录;
n :指从第 m+1 条开始,取 n 条;

取前5个员工信息:

select * from emp limit 0,5;

或者:

select * from emp limit 5;

找出工资排名在前5的员工:

select ename,sal from emp order by sal desc limit 0,5;

或者:

select ename,sal from emp order by sal desc limit 5;

找出工资排名在[ 3-9 ]的员工:

select ename,sal from emp order by sal desc limit 2,7;