SQL Serverで、最後のステートメントの影響を受ける行の総数を取得するには、システム変数@@ROWCOUNTを使用できます。同様に、MySQLでは、FOUND_ROWS()関数を使用して見つけることができます。
このデータセットを作成しましょう
CREATE TABLE TEST(ID INT, NAME VARCHAR(30)); INSERT INTO TEST(ID,NAME) SELECT 1,'NAME1' UNION ALL SELECT 2,'NAME2' UNION ALL SELECT 3,'NAME3' UNION ALL SELECT 4,'NAME4' UNION ALL SELECT 5,'NAME5'; SELECT * FROM TEST; SELECT FOUND_ROWS();
上記は2つの結果セットを返します。 2番目の結果セットは5になります(SELECTステートメントの行数はありません)。
SQL_CALC_FOUND_ROWSをFOUND_ROWS()と一緒に使用して、テーブルの行の総数を取得することもできます。 SQL_CALC_FOUND_ROWSを使用すると、FOUND_ROWS()はLIMIT句を省略します。
SELECT * FROM TEST LIMIT 2;
上記は2行のみを返します。
SELECT SQL_CALC_FOUND_ROWS * FROM TEST LIMIT 2; SELECT FOUND_ROWS();
上記を実行すると、2つの結果セットが返されます。最初の結果セットは2行を返します。 2番目の結果セットは5(LIMIT句のない行の総数)を返します。
これは本当に興味深い関数であり、日常のアプリケーションで使用できると思います。前のコメントで影響を受けた行数を知る必要があるアプリケーションを使用している場合は、コメントを残してください。