SQL TOP、LIMIT、FETCH FIRST 或 ROWNUM 条款
SQL SELECT TOP 子句
这 SELECT TOP
子句用于指定要返回的记录数。
这 SELECT TOP
子句对于包含数千条记录的大型表非常有用。返回大量记录可能会影响性能。
笔记: 并非所有数据库系统都支持SELECT TOP
子句。MySQL 支持LIMIT
子句选择有限数量的记录,而 Oracle 使用FETCH FIRST n ROWS ONLY
和ROWNUM
.
SQL Server/MS Access 语法:
选择顶部 数字|百分 列名称
从 表名
在哪里 状况;
MySQL 语法:
选择 列名称
从 表名
在哪里 状况
限制 数字;
Oracle 12 语法:
选择 列名称
从 表名
排序依据 列名称
先取 数字 仅限行;
较旧的 Oracle 语法:
选择 列名称
从 表名
其中 ROWNUM <= 数字;
较旧的 Oracle 语法(带有 ORDER BY):
选择 *
从(选择 列名称 从 表名排序依据 列名称)
其中 ROWNUM <= 数字;
演示数据库
以下是 Northwind 示例数据库中“客户”表的选集:
客户ID | 顾客姓名 | 联系人姓名 | 地址 | 城市 | 邮政编码 | 国家 |
---|---|---|---|---|---|---|
1 |
阿尔弗雷德·富特基斯特 | 玛丽亚·安德斯 | 大街 57 号 | 柏林 | 12209 | 德国 |
2 | Ana Trujillo 奉献和赞美 | 安娜·特鲁希略 | 阿夫达。 宪法 2222 | 墨西哥城 | 05021 | 墨西哥 |
3 | 安东尼奥莫雷诺卷饼店 | 安东尼奥·莫雷诺 | 斗牛场 2312 | 墨西哥城 | 05023 | 墨西哥 |
4 |
环合之角 | 托马斯·哈代 | 120 汉诺威广场 | 伦敦 | WA1 1DP | 英国 |
5 | 贝尔格伦德斯山口 | 克里斯蒂娜·伯格伦德 | 贝尔格维斯河 8 | 吕勒奥 | S-958 22 | 瑞典 |
SQL TOP、LIMIT 和 FETCH FIRST 示例
以下 SQL 语句从“客户”表中选择前三条记录(对于 SQL Server/MS Access):
以下 SQL 语句显示了 MySQL 的等效示例:
以下 SQL 语句显示了 Oracle 的等效示例:
例子
从客户中选择*
仅获取前 3 行;
SQL TOP PERCENT 示例
以下 SQL 语句从“客户”表中选择前 50% 的记录(对于 SQL Server/MS Access):
以下 SQL 语句显示了 Oracle 的等效示例:
例子
从客户中选择*
仅获取前 50% 的行;
添加 WHERE 子句
以下 SQL 语句从“客户”表中选择前三条记录,其中国家为“德国”(对于 SQL Server/MS Access):
以下 SQL 语句显示了 MySQL 的等效示例:
以下 SQL 语句显示了 Oracle 的等效示例:
例子
从客户中选择*
其中国家='德国'
仅获取前 3 行;