只适用于MySQL. 请参考下面资料。

限制结果集行数

在进行数据检索的时候有时候需要只检索结果集中的部分行,比如说“检索成绩排前三名的学生”、“检索工资水平排在第3位到第7位的员工信息”,这种功能被称为“限制结果集行数”。在虽然主流的数据库系统中都提供了限制结果集行数的方法,但是无论是语法还是使用方式都存在着很大的差异,即使是同一个数据库系统的不同版本(比如MSSQLServer2000和MSSQLServer2005)也存在着一定的差异。因此本节将按照数据库系统来讲解每种数据库系统对限制结果集行数的特性支持。

MYSQL

MYSQL中提供了LIMIT关键字用来限制返回的结果集,LIMIT放在SELECT语句的最后位置,语法为“LIMIT 首行行号,要返回的结果集的最大数目”。比如下面的SQL语句将返回按照工资降序排列的从第二行开始(行号从0开始)的最多五条记录:

SELECT * FROM T_Employee ORDER BY FSalary DESC LIMIT 2,5

返回按照工资降序排列的前五条记录

SELECT * FROM T_Employee ORDER BY FSalary DESC LIMIT 0,5

MS SQLServer2000

MSSQLServer2000中提供了TOP关键字用来返回结果集中的前N条记录,其语法为“SELECT TOP 限制结果集数目 字段列表 SELECT语句其余部分”,比如下面的SQL语句用来检索工资水平排在前五位(按照工资从高到低)的员工信息:

select top 5 * from T_Employee order by FSalary Desc

实现检索按照工资从高到低排序检索从第六名开始一共三个人的信息,那么就可以首先将前五名的主键取出来,在检索的时候检索排除了这五名员工的前三个人,SQL如下:

SELECT top 3 * FROM T_Employee

WHERE FNumber NOT IN

(SELECT TOP 5 FNumber FROM T_Employee ORDER BY FSalary DESC)

ORDER BY FSalary DESC

MS SQLServer2005

MSSQLServer2005兼容几乎所有的MSSQLServer2000的语法,所以可以使用上个小节提到的方式来在MSSQLServer2005中实现限制结果集行数,不过MSSQLServer2005提供了新的特性来帮助更好的限制结果集行数的功能,这个新特性就是窗口函数ROW_NUMBER()。ROW_NUMBER()不能用在WHERE语句中。

ROW_NUMBER()函数可以计算每一行数据在结果集中的行号(从1开始计数),其使用语法如下:

ROW_NUMBER OVER(排序规则)

比如我们执行下面的SQL语句:

SELECT ROW_NUMBER() OVER(ORDER BY FSalary),FNumber,FName,FSalary,FAge

FROM T_Employee

返回第3行到第5行的数据

SELECT * FROM

(

SELECT ROW_NUMBER() OVER(ORDER BY FSalary DESC) AS rownum,

FNumber,FName,FSalary,FAge FROM T_Employee

) AS a

WHERE a.rownum>=3 AND a.rownum<=5

Oracle

Oracle中支持窗口函数ROW_NUMBER(),其用法和MSSQLServer2005中相同.

注意:rownum在Oracle中为保留字,所以这里将MSSQLServer2005中用到的rownum替换为row_num;Oracle中定义表别名的时候不能使用AS关键字,所以这里也去掉了AS。

在Oracle中可以无需自行计算行号,Oracle为每个结果集都增加了一个默认的表示行号的列,这个列的名称为rownum

SELECT rownum,FNumber,FName,FSalary,FAge FROM T_Employee

得到按工资从高到底排序的前6名员工的信息

SELECT * FROM T_Employee

WHERE rownum<=6

ORDER BY FSalary Desc

DB2

DB2中支持窗口函数ROW_NUMBER(),其用法和MSSQLServer2005以及Oracle中相同.

,DB2还提供了FETCH关键字用来提取结果集的前N行,其语法为“FETCH FIRST 条数 ROWS ONLY”,比如我们执行下面的SQL语句可以得到按工资从高到底排序的前6名员工的信息:需要注意的是FETCH子句要放到ORDER BY语句的后面

SELECT * FROM T_Employee

ORDER BY FSalary Desc

FETCH FIRST 6 ROWS ONLY

检索按照工资从高到低排序检索从第六名开始一共三个人的信息,那么就可以首先将前五名的主键取出来,在检索的时候检索排除了这五名员工的前三个人,SQL如下:

SELECT * FROM T_Employee

WHERE FNumber NOT IN

(

SELECT FNumber FROM T_Employee

ORDER BY FSalary DESC

FETCH FIRST 5 ROWS ONLY

)

ORDER BY FSalary DESC

FETCH FIRST 3 ROWS ONLY

抑制数据重复 DISTINCT

DISTINCT关键字是用来进行重复数据抑制的最简单的功能,而且所有的数据库系统都支持DISTINCT,DISTINCT的使用也非常简单,只要在SELECT之后增加DISTINCT即可. DISTINCT是对整个结果集进行数据重复抑制的.

SELECT DISTINCT FDepartment,FSubCompany FROM T_Employee

mysql select from user_mysql查询[select * from user limit 0, 10;]相关推荐

  1. mysql千万级数据查询select、插入insert慢 可能原因总结

    mysql千万级数据查询select.插入insert慢 可能原因总结 表连表查询 并 insert ,insert into -select -from- insert into T1(XX,XX) ...

  2. MySQL 基础 ———— SQL语句的执行顺序与 LIMIT 子句

    引言 到目前为止,已经总结了常见的SQL子句,包括 SELECT .FROM.JOIN ... ON.WHERE.GROUP BY.HAVING.ORDER BY. 虽然SQL的书写顺序是固定的,但在 ...

  3. MySQL查询select实例 【笔记】

    use mydb; select * from EMP; select * from DEPT; select DISTINCT JOB from EMP;  -- distinct   去除重复项 ...

  4. MySQL学习笔记_上(select查询)

      上次整理了一些练习发到博客上了,也说要发基础的,整理了一下午才算是把查询那块的勉强整理完,下次再整理其他的,另外还在写设计模式和数据结构的草稿,写的差不多会慢慢发的,这两项算是副线发展,主线还是按 ...

  5. mysql非结构化查询_Mysql(2.3) 简单查询(SELECT)、子查询

    结构化查询语言(sql) SQL概念和规则 关键字:SQL语言保留的字符串(SELECT FORM) 语句:一条完整的SQL命令(SELECT * FROM dept) 子句:部分的SQL语句,通常由 ...

  6. 【Mysql数据库全套教程笔记-SELECT使用篇】

    Mysql基础篇-SELECT使用篇 SQL之SELECT使用篇 第03章:基本的SELECT语句 第04章:运算符 第05章:排序与分页 第06章:多表查询 第07章:单行函数 第08章:聚合函数 ...

  7. MySQL之单表查询

    一.关键字的执行优先级 1,from:找到表 2,where:拿着where指定的约束条件,去文件/表中取出一条条数据 3,group by:将取出的一条条数据进行分组,如果没有group by,则整 ...

  8. mysql用in报错_Mysql子查询IN中使用LIMIT

    学习下Mysql子查询IN中使用LIMIT的方法. 这两天项目里出了一个问题,mysql LIMIT使用后报错. 需求是这样的,我有3张表,infor信息表,mconfig物料配置表,maaply物料 ...

  9. mysql order by子查询_sql子查询 order by失效问题

    一.问题描述  三表联合查询  按主表的时间倒叙并分页 下面sql语句 ORDER BY失效 ,如果把 ORDER BY  放在最后 比如有20条数据 第一页会是10 -1 第二页是20-11  分页 ...

最新文章

  1. python界面不同按钮实现不同功能-三、PyQt5不同方法创建菜单栏、工具栏和状态栏...
  2. 园友们注意:淘宝网上QQ会员 4钻 3元 等都为骗子行为
  3. layui如何获取父节点的父节点_jquery获取父元素或父节点的方法
  4. [html] 什么是本地存储的有效期?
  5. 服务器证书在注册表上位置,服务器ssl证书注册表
  6. java声明时间为什么类型_JAVA--类的声明周期
  7. 【零基础学Java】—Random的基本概述和使用(十二)
  8. python3.7魔塔游戏_基于Funcode平台的“火锅版魔塔”游戏开发与设计
  9. 看了这篇c语言结构体精讲解,你难道还怕你不会吗?
  10. 计算机说课教案模板,说课稿通用模板
  11. java微信公众号百度地图,微信企业号开发之微信考勤百度地图定位
  12. C语言:利用指针编写程序,用梯形法计算给定的定积分
  13. 一川烟草,满城飞絮,梅子黄时雨
  14. C语言中矩阵定义问题
  15. Unity translucent SSS 次表面散射 皮肤材质研究
  16. Win7+Ubuntu双系统安装教程
  17. SOAP UI工具填写用户名密码校验通不过,需要报文头添加
  18. PostgreSQL 14 版本发布,快来看看有哪些新特性!
  19. html 气泡样式,jQuery 插件实现随机自由弹跳气泡样式
  20. 新型复读机——微信语音

热门文章

  1. 针对表单的事件;条件语句;定时器的简单介绍;
  2. PYTHON——TCPUDP:Socket实现远程执行命令
  3. orcale存储过程学习之路--创建空存储过程(二)
  4. Retrofit学习笔记
  5. 数据库中间件MyCAT源码分析:调试环境搭建
  6. Activity生命周期的补充
  7. 现代控制理论第八版第二章读书笔记
  8. 关于ipconfig中setclassid的初步认识
  9. C# 线程手册 第五章 扩展多线程应用程序 系列
  10. 对称加密(4) NET对称加密实践