Ich möchte X Zeilen abfangen, also setze ich LIMIT X
; aber wie kann ich gleichzeitig auch die Gesamtzahl der Zeilen zählen?
Derzeit verwende ich zwei separate Abfragen, um dies zu tun
SELECT COUNT(*) FROM col WHERE CLAUSE
SELECT * FROM col WHERE CLAUSE LIMIT X
Gibt es eine Möglichkeit, dies in einer Abfrage zu tun?
BEARBEITEN: Die Ausgabe sollte die col
Zellen und die Anzahl der Zeilen sein. Tatsächlich sollte es nach Auswahl der col
Zellen über die Tabelle gehen, um nur zu zählen.
Ich weiß, dass es nicht möglich ist, diese beiden Abfragen zusammenzuführen, da die erste 1 Zeile zurückgibt, sondern die zweite X-Zeile. Ich bin gespannt, ob es in mysql eine Funktion gibt, mit der die Anzahl der Zeilen in Gegenwart von zurückgegeben werden kann LIMIT
.
Antworten:
Es hört sich so an, als ob Sie das LIMIT ausführen möchten, aber dennoch wissen, wie viele Zeilen ohne das LIMIT zurückgegeben worden wären. Schauen Sie sich die GEFUNDENEN REIHEN an
quelle
FOUND ROWS
und während noch zwei Abfragen ausgeführt werden, ist die Leistung möglicherweise besser als das Ausführen einer zweiten COUNT (*) -Abfrage (abhängig von Abfragen und Dataset).mysql
uns das in einem so wichtigen Thema nicht alleine lassen wird;)Verwenden Sie es
SQL_CALC_FOUND_ROWS
in Ihrer SELECT-Abfrage und führen Sie dann Folgendes ausSELECT FOUND_ROWS()
:quelle
Ich weiß, dass dies eine alte ist, aber sie ist nicht mehr gültig, mit MySQL> = 8.0.17, siehe MySQL-Funktion Found_Rows (). Wir müssen also immer noch beide Abfragen ausgeben, d. H. füge eins mit dem
COUNT()
leider hinzu.quelle