Как я могу получить значения count в MySQL в качестве @@ROWCOUNT
в mssql?
Имеет ли Mysql эквивалент @@ROWCOUNT, как в mssql?
Ответ 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`;