2012-04-10 7 views
10

Hey Guyz Ist das möglich zu erhalten Gesamtanzahl der Zeilen zählen mit Offset-GrenzeIst dies möglich Gesamtanzahl der Zeilen mit Offset-Grenze

Szenario

SELECT * FROM users limit 0,5; 

Diese Abfrage enthält 300 Datensätze zählen zu erhalten, aber die Problem ist, wenn ich diese Abfrage mit Offset aufrufen, wird das Ergebnis nur 5 Datensätze anzeigen und ich möchte eine Abfrage nicht zweimal schreiben. eine für Paging-Grenze und anderen für die Gesamtanzahl der Datenanzahl ...

ich das ich will nicht

SELECT * FROM users limit 0,5; // paging 
SELECT count(*) FROM users; // count 

haben diese Abfragen zu fusionieren oder definitiv

+0

1) Warum nicht separat laufen? 2) Gibt es in der Abfrage "count" eine zusätzliche "limit" -Klausel? –

+1

Dies ist das kurze Beispiel für eine Abfrage und ich habe eine große Abfrage, warum ich nicht zweimal in @MostyMostacho eine Abfrage schreiben möchte –

Antwort

7
geschätzt hilft

können Sie SQL_CALC_FOUND_ROWS verwenden wie dieses

SELECT SQL_CALC_FOUND_ROWS * FROM users limit 0,5; 

Es wird die Zeilenanzahl vor Anwendung einer beliebigen LIMIT-Klausel. Es braucht eine weitere Abfrage, die Ergebnisse zu holen, aber diese Abfrage kann einfach

SELECT FOUND_ROWS() 

sein und daher müssen Sie nicht Ihre komplizierte Abfrage wiederholen.