Bagaimana cara COUNT jumlah baris dengan LIMIT?

9

Saya ingin menangkap baris X, jadi, saya atur LIMIT X; tetapi bagaimana saya bisa secara bersamaan menghitung jumlah total baris juga?

Saat ini, saya menggunakan dua permintaan terpisah untuk melakukannya

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

Apakah ada cara untuk melakukan ini dalam satu permintaan?

EDIT: Outputnya harus colsel dan jumlah baris. Bahkan, setelah memilih colsel, ia harus berjalan di atas meja untuk menghitung saja.

Saya tahu bahwa tidak mungkin untuk menggabungkan kedua pertanyaan ini, sebagai baris pertama yang dikembalikan 1, tetapi baris X kedua. Saya ingin tahu apakah ada fungsi di mysql untuk mengembalikan jumlah baris di hadapan LIMIT.

Googlebot
sumber
Bisakah Anda menunjukkan satu atau dua baris dari output yang Anda inginkan?
dezso
1
Dua kueri tidak kompatibel, karena saat ini ditulis: Satu mengembalikan catatan tunggal dengan satu kolom, yang lain akan mengembalikan banyak kolom dalam baris X. Tolong tunjukkan contoh dari output yang diinginkan jika Anda ingin kami memberikan jawaban yang bermakna.
FrustratedWithFormsDesigner

Jawaban:

5

Kedengarannya Anda ingin menjalankan LIMIT, tetapi masih tahu berapa banyak baris yang akan dikembalikan tanpa LIMIT. Lihat BARIS DITEMUKAN

Alain Collins
sumber
1
Memberi +1 untuk ini FOUND ROWS, dan saat masih mengeksekusi dua kueri, ini mungkin kinerja yang lebih baik daripada menjalankan kueri COUNT (*) kedua (tergantung pada kueri dan dataset).
Derek Downey
Inilah yang saya maksud. Saya tahu bahwa mysqltidak akan meninggalkan kita sendirian dalam masalah yang sangat penting;)
Googlebot
1
Senang itu akan membantu. Jangan khawatir, mysql masih akan mengacaukan Anda pada beberapa masalah penting.
Alain Collins
@Dest: atau (mungkin) kinerja yang lebih buruk daripada menjalankan kueri COUNT (*) kedua.
ypercubeᵀᴹ
@ypercube tepatnya
Derek Downey
3

Gunakan SQL_CALC_FOUND_ROWSdalam kueri SELECT Anda dan kemudian jalankan SELECT FOUND_ROWS():

SELECT SQL_CALC_FOUND_ROWS field_name,filed_name2 FROM col WHERE CLAUSE LIMIT X;
SELECT FOUND_ROWS() ;
Dipa
sumber
1
Ini akan mendapat manfaat dari beberapa pembersihan dan beberapa detail lagi agar lebih bermanfaat.
RLF
2

Saya tahu ini adalah yang lama tetapi tidak berlaku lagi, dengan MySQL> = 8.0.17 cf Fungsi MySQL Found_Rows () Jadi kita masih harus mengeluarkan kedua query yaitu. tambahkan satu dengan COUNT(), sayangnya.

Fred
sumber