Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Uzyskaj całkowitą liczbę wierszy, gdy używasz LIMIT?

Na szczęście od MySQL 4.0.0 możesz używać SQL_CALC_FOUND_ROWS opcja w zapytaniu, która powie MySQL, aby zliczył całkowitą liczbę wierszy bez uwzględnienia LIMIT klauzula. Nadal musisz wykonać drugie zapytanie, aby pobrać liczbę wierszy, ale jest to proste zapytanie i nie tak złożone, jak zapytanie, w którym pobrano dane. Użycie jest dość proste. W głównym zapytaniu musisz dodać SQL_CALC_FOUND_ROWS opcja tuż po SELECT a w drugim zapytaniu musisz użyć FOUND_ROWS() funkcja, aby uzyskać całkowitą liczbę wierszy. Zapytania wyglądałyby tak:

SELECT SQL_CALC_FOUND_ROWS name, email FROM users WHERE name LIKE 'a%' LIMIT 10;

SELECT FOUND_ROWS();

Jedynym ograniczeniem jest to, że drugie zapytanie należy wywołać bezpośrednio po pierwszym, ponieważ SQL_CALC_FOUND_ROWS nie zapisuje nigdzie liczby wierszy. Chociaż to rozwiązanie wymaga również dwóch zapytań, jest znacznie szybsze, ponieważ główne zapytanie wykonujesz tylko raz. Możesz przeczytać więcej o SQL_CALC_FOUND_ROWS i FOUND_ROWS() w dokumentacji MySQL.

EDYTUJ: Należy zauważyć, że w większości przypadków dwukrotne uruchomienie zapytania jest w rzeczywistości szybsze niż SQL_CALC_FOUND_ROWS . zobacz tutaj

EDYCJA 2019:

Modyfikator zapytania SQL_CALC_FOUND_ROWS i towarzysząca mu funkcja FOUND_ROWS() są przestarzałe w wersji MySQL 8.0.17 i zostaną usunięte w przyszłej wersji MySQL.

https://dev.mysql.com /doc/refman/8.0/en/information-functions.html#function_found-rows

Zalecane jest użycie COUNT zamiast tego

SELECT * FROM tbl_name WHERE id > 100 LIMIT 10;
SELECT COUNT(*) WHERE id > 100;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy istnieje odpowiednik SQLite do DESCRIBE [tabela] MySQL?

  2. MySQL:Włącz LOAD DATA LOCAL INFILE

  3. Biblioteka nie załadowana:błąd libmysqlclient.16.dylib podczas próby uruchomienia 'rails server' na OS X 10.6 z mysql2 gem

  4. Połącz się z mysql w kontenerze docker z hosta

  5. Samouczek SQL klucza podstawowego — jak zdefiniować klucz podstawowy w bazie danych