How to limit the results on a SQL query

前端 未结 5 1813
生来不讨喜
生来不讨喜 2020-12-19 06:38

I\'m wondering is it possible to limit the result of a SQL request?

For example, only return up to 50 rows from:

  SELECT * FROM 
5条回答
  •  谎友^
    谎友^ (楼主)
    2020-12-19 07:08

    SQL Standard

    As I explained in this article, the SQL:2008 Standard provides the following syntax to limit the SQL result set:

    SELECT
        title
    FROM
        post
    ORDER BY
        id DESC
    FETCH FIRST 50 ROWS ONLY
    

    The SQL:2008 Top-N records clause is supported in Oracle since 12c, SQL Server since 2012, and PostgreSQL since 8.4.

    SQL Server

    While SQL Server supports the SQL:2008 Top-N standard syntax, you need to provide the OFFSET clause as well:

    SELECT
        title
    FROM
        post
    ORDER BY
        id DESC
    OFFSET 0 ROWS
    FETCH FIRST 50 ROWS ONLY
    

    On older SQL Server versions, you can use TOP:

    SELECT TOP 50
        title
    FROM
        post
    ORDER BY
        id DESC
    

    Oracle 11g and older versions

    Prior to version 12c, to fetch the Top-N records, you had to use a derived table and the ROWNUM pseudocolumn:

    SELECT *
    FROM (
        SELECT
            title
        FROM
            post
        ORDER BY
            id DESC
    )
    WHERE ROWNUM <= 50
    

    MySQL and PostgreSQL 8.3 or older

    Traditionally, MySQL and PostgreSQL use the LIMIT clause to restrict the result set to the Top-N records:

    SELECT
        title
    FROM
        post
    ORDER BY
        id DESC
    LIMIT 50
    

提交回复
热议问题