sql >> データベース >  >> RDS >> MariaDB

MariaDB FOUND_ROWS()の説明

    MariaDBでは、LIMITを使用できます クエリによって返される行数を減らす句。 FOUND_ROWS() このようなクエリで関数を使用して、LIMITがあった場合に返されるはずの行数を返すことができます。 条項は含まれていません。

    クエリを再度実行しなくてもこの情報を取得できるため、これは便利です。

    FOUND_ROWS() 関数を使用して、必要に応じて、limitedステートメントによって実際に返された行数を返すこともできます。

    構文

    構文は次のようになります:

    FOUND_ROWS()

    引数は必要ありません。

    ステートメントによって返される行数を取得するには、SQL_CALC_FOUND_ROWSを含めます。 ステートメントで、FOUND_ROWS()を実行します 別のクエリで(最初のクエリを実行した後)。

    関数がどのように機能するかを示す例を次に示します。

    次のようなテーブルを作成するとします。

    SELECT SQL_CALC_FOUND_ROWS * 
    FROM Pets 
    LIMIT 2;

    結果:

    +-------+-----------+---------+---------+------------+
    | PetId | PetTypeId | OwnerId | PetName | DOB        |
    +-------+-----------+---------+---------+------------+
    |     1 |         2 |       3 | Fluffy  | 2020-11-20 |
    |     2 |         3 |       3 | Fetch   | 2019-08-16 |
    +-------+-----------+---------+---------+------------+

    LIMITで指定されているように、2行のみが返されました 条項。

    ただし、ここではFOUND_ROWS()を使用しましょう。 LIMITを使用しなかった場合に返される行数を確認するには、 条項:

    SELECT FOUND_ROWS();

    結果:

    +--------------+
    | FOUND_ROWS() |
    +--------------+
    |            8 |
    +--------------+

    LIMITを使用しなかった場合、8行が返されたことを示しています。 条項。

    LIMITなしでクエリを実行することで、これを確認できます。 条項:

    SELECT * 
    FROM Pets;

    結果:

    +-------+-----------+---------+---------+------------+
    | PetId | PetTypeId | OwnerId | PetName | DOB        |
    +-------+-----------+---------+---------+------------+
    |     1 |         2 |       3 | Fluffy  | 2020-11-20 |
    |     2 |         3 |       3 | Fetch   | 2019-08-16 |
    |     3 |         2 |       2 | Scratch | 2018-10-01 |
    |     4 |         3 |       3 | Wag     | 2020-03-15 |
    |     5 |         1 |       1 | Tweet   | 2020-11-28 |
    |     6 |         3 |       4 | Fluffy  | 2020-09-17 |
    |     7 |         3 |       2 | Bark    | NULL       |
    |     8 |         2 |       4 | Meow    | NULL       |
    +-------+-----------+---------+---------+------------+

    SQL_CALC_FOUND_ROWSも削除しました 今回は必要なかったので、声明から。

    SQL_CALC_FOUND_ROWSを省略します オプション

    SQL_CALC_FOUND_ROWSを省略した場合 オプション、FOUND_ROWS() 関数は実際のを返します 返された行数。つまり、LIMITの後に返された行数を返します。 条項が適用されました。

    SQL_CALC_FOUND_ROWSを使用しない同じ例を次に示します。 オプション:

    SELECT * 
    FROM Pets 
    LIMIT 2;

    結果:

    +-------+-----------+---------+---------+------------+
    | PetId | PetTypeId | OwnerId | PetName | DOB        |
    +-------+-----------+---------+---------+------------+
    |     1 |         2 |       3 | Fluffy  | 2020-11-20 |
    |     2 |         3 |       3 | Fetch   | 2019-08-16 |
    +-------+-----------+---------+---------+------------+

    次に、FOUND_ROWS()を実行します :

    SELECT FOUND_ROWS();

    結果:

    +--------------+
    | FOUND_ROWS() |
    +--------------+
    |            2 |
    +--------------+

    今回はFOUND_ROWS() 返された2 8の代わりに 。

    LIMITのないクエリ 条項

    LIMITがなくても、同じ概念をクエリに適用できます。 条項。

    例:

    SELECT * 
    FROM Pets;

    結果:

    +-------+-----------+---------+---------+------------+
    | PetId | PetTypeId | OwnerId | PetName | DOB        |
    +-------+-----------+---------+---------+------------+
    |     1 |         2 |       3 | Fluffy  | 2020-11-20 |
    |     2 |         3 |       3 | Fetch   | 2019-08-16 |
    |     3 |         2 |       2 | Scratch | 2018-10-01 |
    |     4 |         3 |       3 | Wag     | 2020-03-15 |
    |     5 |         1 |       1 | Tweet   | 2020-11-28 |
    |     6 |         3 |       4 | Fluffy  | 2020-09-17 |
    |     7 |         3 |       2 | Bark    | NULL       |
    |     8 |         2 |       4 | Meow    | NULL       |
    +-------+-----------+---------+---------+------------+

    次に、FOUND_ROWS()を実行します :

    SELECT FOUND_ROWS();

    結果:

    +--------------+
    | FOUND_ROWS() |
    +--------------+
    |            8 |
    +--------------+

    その他のステートメント

    FOUND_ROWS() 関数は、SHOWなどの他のステートメントでも使用できます。 、DESCRIBE 、およびHELP


    1. ExecuteNonQuery:接続プロパティが初期化されていません。

    2. SQL Serverでリンクサーバーから主キーを返す(T-SQLの例)

    3. 週数を日付に変換する方法は?

    4. MYSQLの条件による一意性制約