Wie zähle ich die Anzahl der Zeilen mit LIMIT?


9

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 colZellen und die Anzahl der Zeilen sein. Tatsächlich sollte es nach Auswahl der colZellen ü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.


Könnten Sie ein oder zwei Zeilen Ihrer gewünschten Ausgabe anzeigen?
Dekso

1
Die beiden Abfragen sind nicht kompatibel, wie sie derzeit geschrieben werden: Eine gibt einen einzelnen Datensatz mit einer einzelnen Spalte zurück, die andere gibt viele Spalten in X- Zeilen zurück. Bitte zeigen Sie ein Beispiel für die gewünschte Ausgabe, wenn Sie möchten, dass wir eine aussagekräftige Antwort geben.
FrustratedWithFormsDesigner

Antworten:


5

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


1
+ 1'wenn dies für FOUND ROWSund 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).
Derek Downey

Genau das habe ich gemeint. Ich wusste, dass mysqluns das in einem so wichtigen Thema nicht alleine lassen wird;)
Googlebot

1
Ich bin froh, dass das helfen würde. Keine Sorge, MySQL wird Sie immer noch in einigen wichtigen Fragen verarschen.
Alain Collins

@DTest: oder (möglicherweise) schlechtere Leistung als das Ausführen einer zweiten COUNT (*) -Abfrage.
Ypercubeᵀᴹ

@ypercube genau
Derek Downey

3

Verwenden Sie es SQL_CALC_FOUND_ROWSin Ihrer SELECT-Abfrage und führen Sie dann Folgendes aus SELECT FOUND_ROWS():

SELECT SQL_CALC_FOUND_ROWS field_name,filed_name2 FROM col WHERE CLAUSE LIMIT X;
SELECT FOUND_ROWS() ;

1
Dies würde von einigen Aufräumarbeiten und einigen weiteren Details profitieren, damit es nützlicher wird.
RLF

2

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.