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 。