sql >> Database teknologi >  >> RDS >> Mysql

Hvordan kan jeg tælle antallet af rækker, som en MySQL-forespørgsel returnerede?

Henter det samlede antal rækker i et forespørgselsresultat...

Du kan bare gentage resultatet og tælle dem. Du siger ikke hvilket sprog eller hvilket klientbibliotek du bruger, men API'en giver en mysql_num_rows funktion, som kan fortælle dig antallet af rækker i et resultat.

Dette er eksponeret i PHP, for eksempel som mysqli_num_rows fungere. Som du har redigeret spørgsmålet for at nævne, at du bruger PHP, er her et simpelt eksempel, der bruger mysqli-funktioner:

$link = mysqli_connect("localhost", "user", "password", "database");

$result = mysqli_query($link, "SELECT * FROM table1");
$num_rows = mysqli_num_rows($result);

echo "$num_rows Rows\n";

Henter et antal rækker, der matcher nogle kriterier...

Brug bare COUNT(*) - se Optælling af rækker i MySQL-manualen. For eksempel:

SELECT COUNT(*) FROM foo WHERE bar= 'value';

Få samlede rækker, når LIMIT bruges...

Hvis du havde brugt en LIMIT-klausul, men vil vide, hvor mange rækker du ville få uden den, så brug SQL_CALC_FOUND_ROWS i din forespørgsel efterfulgt af VÆLG FOUND_ROWS( );

SELECT SQL_CALC_FOUND_ROWS * FROM foo
   WHERE bar="value" 
   LIMIT 10;

SELECT FOUND_ROWS();

For meget store tabeller vil dette ikke være særlig effektivt, og du er bedre til at køre en enklere forespørgsel for at få en optælling og cache den, før du kører dine forespørgsler for at få sider med data.



  1. Oracle, Gør datoens første dag i måneden

  2. mysql fuldtekstsøgning mislykkedes

  3. Sådan konverteres et heltal til en decimal i SQL Server

  4. Er PL/SQL-variabler i markører effektivt det samme som bindeparametre?