您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

ad_sql__SELECT__TOP__LIMIT__ROWNUM

SQL SELECT TOP 子句

SELECT TOP 语句用于在 SQL 中限制返回的结果集中的行数, 它通常用于只需要查询前几行数据的情况,尤其在数据集非常大时,可以显著提高查询性能。

SELECT TOP 子句对于拥有数千条记录的大型表来说,是非常有用的。

说明:

  • SELECT TOP 在 SQL Server 和 MS Access 中使用,而在 MySQL 和 PostgreSQL 中使用 LIMIT 关键字。

  • Oracle 在 12c 版本之前没有直接等效的关键字,可以通过 ROWNUM 实现类似功能,但在 12c 及以上版本中引入了 FETCH FIRST。

  • 当使用 TOP 或 LIMIT 时,最好结合 ORDER BY 子句,以确保返回的行是特定顺序的前几行。

    SQL Server / MS Access 语法

    SELECT TOP number|percent column1, column2, ...
    FROM table_name;
    

    number|percent:指定返回的行数或百分比。

  • number:具体的行数。

  • percent:数据集的百分比。

    MySQL 语法

    
    SELECT column1, column2, ...
    FROM table_name
    LIMIT number;
    

    Oracle 语法

    
    SELECT column1, column2, ...
    FROM table_name
    FETCH FIRST number ROWS ONLY;
    

    PostgreSQL 语法

    
    SELECT column1, column2, ...
    FROM table_name
    LIMIT number;
    

    实例

    假设我们有一个名为 Employees 的表,其中包含以下数据:

    EmployeeID EmployeeName Salary
    1 John Smith 50000
    2 Maria Garcia 60000
    3 Liam Johnson 70000
    4 Emma Wilson 80000
    5 Oliver Brown 90000

    SQL Server 和 MS Access 返回前 3 行数据:

    
    SELECT TOP 3 EmployeeName, Salary
    FROM Employees;
    

    返回前 10% 的数据:

    
    SELECT TOP 10 PERCENT EmployeeName, Salary
    FROM Employees;
    

    MySQL 返回前 3 行数据:

    
    SELECT EmployeeName, Salary
    FROM Employees
    LIMIT 3;
    

    PostgreSQL 返回前 3 行数据:

    
    SELECT EmployeeName, Salary
    FROM Employees
    LIMIT 3;
    

    Oracle 返回前 3 行数据:

    
    SELECT EmployeeName, Salary
    FROM Employees
    FETCH FIRST 3 ROWS ONLY;
    

    演示数据库

    在本教程中,我们将使用 RUNOOB 样本数据库。

    下面是选自 "Websites" 表的数据:

    
    mysql> SELECT * FROM Websites;
    +----+---------------+---------------------------+-------+---------+
    +----+---------------+---------------------------+-------+---------+
    <table>
    <tr>
    <th>1</th>
    <th>Google</th>
    <th>https://www.google.cm/</th>
    <th>1</th>
    <th>USA</th>
    </tr>
    <tr>
    <td>3</td>
    <td>菜鸟教程</td>
    <td>http://www.runoob.com/</td>
    <td>5000</td>
    <td>USA</td>
    </tr>
    <tr>
    <td>4</td>
    <td>微博</td>
    <td>http://weibo.com/</td>
    <td>20</td>
    <td>CN</td>
    </tr>
    <tr>
    <td>5</td>
    <td>Facebook</td>
    <td>https://www.facebook.com/</td>
    <td>3</td>
    <td>USA</td>
    </tr>
    <tr>
    <td>7</td>
    <td>stackoverflow</td>
    <td>http://stackoverflow.com/</td>
    <td>0</td>
    <td>IND</td>
    </tr>
    </table>
    
    +----+---------------+---------------------------+-------+---------+
    

    MySQL SELECT LIMIT 实例

    下面的 SQL 语句从 "Websites" 表中选取头两条记录:

    实例

    
    SELECT * FROM Websites LIMIT 2;
    

    执行以上 SQL,数据如下所示:

    ![](https://www.runoob.com/wp-content/uploads/2013/09/A90E535B-A499-4E3D-83DD-6A7AD1144B05.jpg}

    SQL SELECT TOP PERCENT 实例

    在 Microsoft SQL Server 中还可以使用百分比作为参数。

    下面的 SQL 语句从 websites 表中选取前面百分之 50 的记录:

    实例

    以下操作在 Microsoft SQL Server 数据库中可执行。

    
    SELECT TOP 50 PERCENT * FROM Websites;
    

    来源:https://www.runoob.com/markdown/md-image.html