質問

SQLリクエストの結果を制限することは可能ですか?

たとえば、以下から最大50行のみを返します。

  SELECT * FROM <table>

ありがとう。

役に立ちましたか?

解決

はい、これは可能です。これは、DBエンジン間で異なります。

postgres:

SELECT * FROM <table> LIMIT 50

SQLサーバー:

SELECT TOP 50 * FROM <table> 

...

他のヒント

使用できます 上の条項:

SELECT TOP 50 * FROM <table>

あなたのデータベースがそれをサポートしていない場合、あなたも試すことができます LIMITROWNUM ただし、これは使用しているデータベースに依存します。

はい、もちろんmysqlでは可能性があります:

Limit句は、Selectステートメントによって返される行の数を制約するために使用できます。 Limitは、1つまたは2つの数値引数を取ります。どちらも非陰性整数定数でなければなりません(準備されたステートメントを使用する場合を除く)。

2つの引数を使用すると、最初の引数は最初の行のオフセットを指定します。2番目の引数は、戻る行の最大数を指定します。初期行のオフセットは0(1ではない)です。

SELECT * FROM tbl LIMIT 5,10; # Retrieve rows 6-15

特定のオフセットから結果セットの最後まですべての行を取得するには、2番目のパラメーターに多数を使用できます。このステートメントは、96行目から最後の行まですべての行を取得します。

SELECT * FROM tbl LIMIT 95,18446744073709551615;

1つの引数で、値は結果セットの先頭から戻る行の数を指定します。

SELECT * FROM tbl LIMIT 5; # Retrieve first 5 rows

つまり、limit row_countは制限0、row_countに相当します。

mysqlでは、aを使用します 制限

 SELECT * FROM <table> LIMIT 50

SQL標準

私が説明したように この記事, 、SQL:2008 Standardは、SQLの結果セットを制限するために次の構文を提供します。

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

SQL:2008 TOP-N RECORDS条項は、12C以降Oracleでサポートされています。2012年以降、SQL Server、8.4からPostgreSQL。

SQLサーバー

SQL ServerはSQL:2008 TOP-N Standard Syntaxをサポートしていますが、オフセット句も提供する必要があります。

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

古いSQL Serverバージョンでは、Top:を使用できます。

SELECT TOP 50
    title
FROM
    post
ORDER BY
    id DESC

Oracle 11g以上のバージョン

バージョン12Cの前に、TOP-Nレコードを取得するには、派生テーブルとRownumの疑似柱を使用する必要がありました。

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

mysqlおよびpostgresql 8.3以上

従来、MySQLとPostgreSQLはLIMIT句を使用して、結果をTOPNレコードに制限します。

SELECT
    title
FROM
    post
ORDER BY
    id DESC
LIMIT 50
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top