sql >> Databasteknik >  >> RDS >> Mysql

Hur kan jag räkna antalet rader som en MySQL-fråga returnerade?

Hämtar totalt antal rader i ett frågeresultat...

Du kan bara upprepa resultatet och räkna dem. Du säger inte vilket språk eller vilket klientbibliotek du använder, men API:et tillhandahåller en mysql_num_rows funktion som kan berätta för dig antalet rader i ett resultat.

Detta exponeras i PHP, till exempel, som mysqli_num_rows fungera. Eftersom du har redigerat frågan för att nämna att du använder PHP, här är ett enkelt exempel med 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";

Hämtar ett antal rader som matchar vissa kriterier...

Använd bara COUNT(*) - se Räkna rader i MySQL-manualen. Till exempel:

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

Få totalt antal rader när LIMIT används...

Om du hade använt en LIMIT-klausul men vill veta hur många rader du skulle få utan den, använd SQL_CALC_FOUND_ROWS i din fråga, följt av VÄLJ FOUND_ROWS( );

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

SELECT FOUND_ROWS();

För mycket stora tabeller kommer detta inte att vara särskilt effektivt, och du är bättre att köra en enklare fråga för att få en räkning och cachelagra den innan du kör dina frågor för att få sidor med data.



  1. Kör Galera Cluster på Kubernetes

  2. SQLite JSON_GROUP_ARRAY()

  3. ORA-12519 TNS:ingen lämplig servicehanterare hittades

  4. Fixa "ERROR 1054 (42S22):Okänd kolumn "colname" i "order clause" i MariaDB