MySQL Limit: Anzahl Ergebnisse ohne LIMIT herausfinden

In einigen Situation ist der geneigte Entwickler interessiert an der Gesamtzahl der Ergebnisse, die eine Abfrage ohne LIMIT – Klausel ergeben hätte. Die Holzhammermethode in so einem Fall ist, die Abfrage einfach nochmal ohne LIMIT abzufeuern. Doch es geht besser. Und zwar mit folgendem Konstrukt:

SELECT SQL_CALC_FOUND_ROWS productid, price, stock  FROM products  WHERE price > 100  LIMIT 10, 30;  SELECT FOUND_ROWS(); 

Durch das „Einschleusen“ von SQL_CALC_FOUND_ROWS können wir direkt danach mit FOUND_ROWS() die Gesamtzahl an Ergebnissen erfragen. Für den Fall, dass nur ein Attribut selektiert werden soll, kann man auch direkt eine Abfrage draus machen:

SELECT SQL_CALC_FOUND_ROWS productid  FROM products  WHERE price > 100  LIMIT 10, 30  UNION  SELECT FOUND_ROWS(); 

Auf die Art und Weise wird an das Resultset als letzte Zeile noch die Gesamtzahl an Ergebnissen ohne LIMIT angehangen. Mehr dazu direkt im MySQL Manual.

Zum Abschluss muss ich mich nochmal aufregen: Es gibt in MySQL keine Möglichkeit, alle Datensätze ab einem gewissen offset zu bekommen. Etwas verschämt schlägt das Handbuch vor, in solchen Fällen zu unschönen Konstrukten dieser Art zu greifen:

SELECT * FROM tbl LIMIT 95,18446744073709551615; 


Deprecated: Directive 'allow_url_include' is deprecated in Unknown on line 0