Come CONTARE il numero di righe con LIMIT?


9

Voglio catturare X righe, quindi, ho impostato LIMIT X; ma come posso contare contemporaneamente anche il numero totale di righe?

Attualmente, utilizzo due query separate per farlo

SELECT COUNT(*) FROM col WHERE CLAUSE
SELECT * FROM col WHERE CLAUSE LIMIT X

C'è un modo per farlo in una query?

EDIT: l'output dovrebbe essere le colcelle e il numero di righe. In effetti, dopo aver selezionato le colcelle, dovrebbe camminare sul tavolo per contare solo.

So che non è possibile unire queste due query, poiché la prima restituisce 1 riga, ma la seconda X righe. Sono curioso di sapere se esiste una funzione in mysql per restituire il numero di righe in presenza di LIMIT.


Potresti mostrare una o due righe dell'output desiderato?
dezso

1
Le due query non sono compatibili, poiché sono attualmente scritte: una restituisce un singolo record con una singola colonna, l'altra restituirà molte colonne in X righe. Si prega di mostrare un esempio dell'output desiderato se si desidera che forniamo una risposta significativa.
FrustratedWithFormsDesigner,

Risposte:


5

Sembra che tu voglia eseguire il LIMIT, ma sai ancora quante righe sarebbero state restituite senza il LIMIT. Dai un'occhiata a FOUND ROWS


1
+ 1 per questo FOUND ROWS, e mentre sta ancora eseguendo due query, potrebbe essere una prestazione migliore rispetto all'esecuzione di una seconda query COUNT (*) (a seconda delle query e del set di dati).
Derek Downey,

Questo è ESATTAMENTE quello che intendevo. Sapevo che mysqlnon ci lascerà soli su un problema così importante;)
Googlebot il

1
Sono contento che sarebbe d'aiuto. Non preoccuparti, mysql ti rovinerà comunque su diverse questioni importanti.
Alain Collins,

@DTest: o (potrebbe essere) prestazioni peggiori rispetto all'esecuzione di una seconda query COUNT (*).
ypercubeᵀᴹ

@ypercube precisamente
Derek Downey il

3

Utilizzare SQL_CALC_FOUND_ROWSnella query SELECT, quindi eseguire SELECT FOUND_ROWS():

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

1
Ciò trarrebbe beneficio da un po 'di pulizia e da qualche dettaglio in più per renderlo più utile.
RLF,

2

So che questo è vecchio ma non è più valido, con MySQL> = 8.0.17 cf Funzione MySQL Found_Rows () Quindi dobbiamo ancora inviare entrambe le query, ad es. aggiungine uno con COUNT(), sfortunatamente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.