1 Fork me on GitHub

20. SQL--top子句:限制返回数据的条数

1 .前言

sql top 子句用于限定要返回的记录的数据,可以是一个具体的数字,也可以是一个百分数。

对于拥有成千上万条记录的大型数据表来说,top 子句非常有用,它能够压缩结果集的大小,提高程序查询效率。

注意,并不是所有的数据库都支持 top 子句,有些数据库使用其它的等价语句来替代,例如:

  • mysql 使用 limit 子句获取指定数量的记录;
  • oracle 使用 rownum 子句获取指定数量的记录。

2 .语法

select 语句中的 top 子句的基本语法如下:

select top number|percent column_name(s)
from table_name
where [condition]

3. 示例

现在有包含如下记录的 website 表:

+----+----------------+----------------------------+-----+-------+---------+---------+
| id | name           | url                        | age | alexa | uv      | country |
+----+----------------+----------------------------+-----+-------+---------+---------+
|  1 | 百度           | https://www.baidu.com/     |  21 |     4 |  5010.5 | CN      |
|  2 | 淘宝           | https://www.taobao.com/    |  17 |     8 | 3996.75 | CN      |
|  3 | C语言中文网    | http://c.biancheng.net/    |  12 |  7923 |   11.62 | CN      |
|  4 | Google         | https://www.google.com/    |  23 |     1 |   36474 | US      |
|  5 | GitHub         | https://github.com/        |  13 |    95 |   216.3 | US      |
|  6 | Stack Overflow | https://stackoverflow.com/ |  16 |    48 |   592.2 | US      |
|  7 | Yandex         | http://www.yandex.ru/      |  11 |    53 |  591.82 | RU      |
|  8 | VK             | https://vk.com/            |  23 |    23 |    1206 | RU      |
+----+----------------+----------------------------+-----+-------+---------+---------+

SQL Server 支持 TOP 子句,以下语句在 SQL Server 上运行通过,它将获取 website 表中的前三条记录:

select top 3 * from website;

执行结果:

+----+-------------+-------------------------+-----+-------+---------+---------+
| id | name        | url                     | age | alexa | uv      | country |
+----+-------------+-------------------------+-----+-------+---------+---------+
|  1 | 百度        | https://www.baidu.com/  |  21 |     4 |  5010.5 | CN      |
|  2 | 淘宝        | https://www.taobao.com/ |  17 |     8 | 3996.75 | CN      |
|  3 | C语言中文网 | http://c.biancheng.net/ |  12 |  7923 |   11.62 | CN      |
+----+-------------+-------------------------+-----+-------+---------+---------+

 如果您使用 MySQL 数据库,请使用 LIMIT 子句替代:

select * from website limit 3;

如果您使用 Oracle 数据库,请使用 ROWNUM 子句替代:

select * from website where rownum <= 3;

 

posted @ 2022-08-30 18:38  v_jjling  阅读(82)  评论(0编辑  收藏  举报
AmazingCounters.com