MySQL 单表employees 分页查询练习 (三)

测试用数据来源于Oracle数据库中的测试数据

MySQL数据库表:  employees库表测试试数据

#--分页查询练习
#--1.查询工资最高的3名员工信息
#-- 第一步按工资排序 tb1
SET @rownum:=0; #--mysql没有伪列,使用局部变量代替  https://www.cnblogs.com/shuilangyizu/p/7866479.html
SELECT e1.EMPLOYEE_ID,e1.SALARY, @rownum:=@rownum+1 as rownum FROM  (SELECT @rownum:=0) r, employees e1 ORDER BY e1.SALARY DESC
#--第二步 
SELECT e2.* FROM tb1 e2 WHERE rownum<=3
#--第三步 整合
SELECT e2.* FROM(
SELECT e1.EMPLOYEE_ID,e1.SALARY, @rownum:=@rownum+1 as rownum FROM  (SELECT @rownum:=0) r, employees e1 ORDER BY e1.SALARY DESC
) e2 WHERE rownum<=3
 
#--2.查询工资排名第5到第10的员工信息
#--第一步 按工资排序
SELECT e1.EMPLOYEE_ID,e1.SALARY, @rownum:=@rownum+1 FROM employees e1, (SELECT @rownum:=0) r ORDER BY e1.SALARY DESC
#--第二步 给第一步结果起别名tb1
SELECT tb1.* FROM (第一步) tb1 WHERE rownum>=5 and rownum <=10
#--第三步 整合
SELECT tb1.* FROM (
SELECT e1.EMPLOYEE_ID,e1.SALARY, @rownum:=@rownum+1 rownum FROM employees e1, (SELECT @rownum:=0) r ORDER BY e1.SALARY DESC
)tb1 WHERE rownum>=5 and rownum <=10

#--3.查询first_name是以大写D开头的第3到第5个员工信息
#--第一步 查询first_name是以大写D开头的员工信息 --tb1
SELECT e.first_name, @rownum:=@rownum+1 rownum FROM (SELECT @rownum:=0) r, employees e WHERE e.first_name LIKE 'D%'  #--tb1
#--第二步 第3到第5个员工信息
SELECT tb1.*, rownum FROM(第一步)tb1 WHERE rownum>=3 and rownum<=5
#==第三步
SELECT tb1.* FROM(
SELECT e.first_name, @rownum:=@rownum+1 rownum FROM (SELECT @rownum:=0) r, employees e WHERE e.first_name LIKE 'D%'  #--tb1
)tb1 WHERE tb1.rownum>=3 and tb1.rownum<=5 

2018-02-10

猜你喜欢

转载自blog.csdn.net/vcfriend/article/details/79306503