it-swarm.com.ru

Есть ли в Mysql эквивалент @@ ROWCOUNT, как в mssql?

Как я могу получить значения количества строк в MySQL, как @@ROWCOUNT в mssql?

38
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();

который вернет количество затронутых строк.

57
AndiDog
mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name

    -> WHERE id > 100 LIMIT 10;

mysql> SELECT FOUND_ROWS();

Подробнее об этом здесь

7
Lazarus

Самый простой способ - использовать переменную:

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

Или вы можете использовать конструкцию FOUND_ROWS() после помещения SQL_CALC_FOUND_ROWS в оператор SELECT.

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`;
0
Rolf