Подтвердить что ты не робот

Имеет ли Mysql эквивалент @@ROWCOUNT, как в mssql?

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

4b9b3361

Ответ 1

Для 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();

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

Ответ 2

mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name

    -> WHERE id > 100 LIMIT 10;

mysql> SELECT FOUND_ROWS();

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

Ответ 3

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

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

Ответ 4

Есть и другой способ:

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

Получить количество строк

SELECT COUNT(*) FROM `results`;

Получить подмножество

SELECT * FROM `results` LIMIT 5,10;

Временная таблица существует только в текущем сеансе. Я по-прежнему буду очищаться после

DROP TEMPORARY TABLE `results`;