mssql排序与分页

#05章 排序与分页#1.排序操作
#如果没有使用排序操作,默认情况下查询返回的数据时按住添加数据的显示情况
SELECT * FROM employees;
#练习: 按住salary从高到低的顺序显示员工信息
#asc 升序
#降序 desc
#默认升序 order by 默认升序
SELECT employee_id,last_name,salary
FROM employees
ORDER BY salary DESC;
#order by salary ascl;
#我们可以使用列的别名 进行排序
SELECT employee_id,last_name,salary *12 AS "auu_salary"
FROM employees
WHERE department_id IN(50,60,70)
ORDER BY auu_salary DESC;
#4.二级排序
SELECT employee_id,salary,department_id
FROM employees
ORDER BY department_id DESC,salary ASC;
#分页的操作
#2.1使用mysql的limit 实现书的分页显示
SELECT employee_id,last_name,salary
FROM employees
WHERE department_id IN(20,30,40,50)
ORDER BY salary
LIMIT 0,20;
SELECT employee_id,last_name,salary
FROM employees
WHERE department_id IN(20,30,40,50)
ORDER BY salary
LIMIT 20,40;
#需求,每页显示的pagesize、条记录,此时显示第pageno页
#公式:limit(pageNo -1)*pageSize,pageSize;
# where ... order by ... limit 声明顺序如下
#limit 格式 严格上格式有两个值 位置偏移量,条目数
#结构limit 0,条目数 等价于limit 条目数;
SELECT employee_id,last_name,salary
FROM employees
WHERE salary >6000
ORDER BY salary DESC
LIMIT 10;
#练习: 表里有107条数据,我们只想要显示第32,33条数据怎么办?
SELECT employee_id,salary,last_name
FROM employees
LIMIT 31,2;#类似于数组
#2.3 8.0的新特性 offset 关键字
SELECT employee_id,last_name
FROM employees
LIMIT 2 OFFSET 31;
#练习 ,查询员工表中工资最高的工资
SELECT salary,employee_id,last_name
FROM employees
ORDER BY salary DESC
LIMIT 1;

#2.4 limit 可以使用在mysql pgsql sqllite等数据库中使用

 练习:

#1. 查询员工的姓名和部门号和年薪,按年薪降序,按姓名升序显示
SELECT last_name,department_id,salary * 12 AS auu_salary
FROM employees
ORDER BY auu_salary DESC ,last_name ASC;
#2. 选择工资不在 8000 到 17000 的员工的姓名和工资,按工资降序,显示第21到40位置的数据
SELECT last_name,salary
FROM employees
WHERE salary <8000 OR salary >17000
ORDER BY salary DESC
LIMIT 20,20;
# 答案的写法 SELECT last_name,salary FROM employees WHERE salary NOT BETWEEN 8000 AND 17000 ORDER BY salary DESC LIMIT 20,20;
#3. 查询邮箱中包含 e 的员工信息,并先按邮箱的字节数降序,再按部门号升序
SELECT *
FROM employees
WHERE email LIKE '%e%'
ORDER BY LENGTH(email) DESC ,department_id ASC;

posted @ 2022-02-14 14:56  wiselee/  阅读(79)  评论(0)    收藏  举报