web-dev-qa-db-ja.com

Mysqlにはmssqlのような@@ ROWCOUNTと同等のものがありますか?

@@ROWCOUNTがmssqlで行うように、MySQLで行カウント値を取得するにはどうすればよいですか?

39
abs

SELECTの場合、FOUND_ROWSコンストラクトを使用できます( ここに記載 ):

SELECT SQL_CALC_FOUND_ROWS something FROM your_table WHERE whatever;
SELECT FOUND_ROWS( ) ;

これは、最後のSELECTクエリの行数を返します(または最初のクエリにLIMIT句がある場合、LIMIT)。

UPDATE/DELETE/INSERTの場合、 ROW_COUNT 構文です。

INSERT INTO your_table VALUES (1,2,3);
SELECT ROW_COUNT();

影響を受ける行の数を返します。

59
AndiDog
mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name

    -> WHERE id > 100 LIMIT 10;

mysql> SELECT FOUND_ROWS();

これについてもっと読む here

7
Lazarus

最も簡単な方法は、変数を使用することです。

_mysql> SELECT @rowcount:=COUNT(*) FROM my_table;
mysql> SELECT @rowcount;
_

または、SQL_CALC_FOUND_ROWSをSELECTステートメントに入れた後、FOUND_ROWS()構文を使用できます。

_mysql> SELECT SQL_CALC_FOUND_ROWS * FROM my_table;
mysql> SELECT FOUND_ROWS();
_
2
Yada

別の方法があります:

CREATE TEMPORARY TABLE `results` AS ( *** Your query without LIMIT *** );

行数を取得する

SELECT COUNT(*) FROM `results`;

サブセットを取得する

SELECT * FROM `results` LIMIT 5,10;

一時テーブルは現在のセッションにのみ存在します。私はその後もクリーンアップします

DROP TEMPORARY TABLE `results`;
1
Rolf