В 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();
Горното ще върне два резултата. Вторият резултат ще бъде 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();
Когато изпълните горното, той връща два набора резултати. Първият набор от резултати ще върне два реда. Вторият набор от резултати ще върне 5 (общ брой редове без клауза LIMIT).
Мисля, че това е наистина интересна функция и можем да я използваме в ежедневно приложение. Оставете коментар, ако използвате приложение, където трябва да знаете колко реда са били засегнати от предишния коментар.