Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

SQL dapatkan ROW_NUMBER dan COUNT pada setiap permintaan SELECT

Ini mungkin dimaksudkan untuk memungkinkan penomoran halaman. Menampilkan jumlah baris bisa sangat mahal.

Salah satu cara yang saya temukan bekerja dengan baik pada berbagai database adalah dengan membagi pekerjaan menjadi dua bagian. Pertama, Anda mengumpulkan ID dari baris yang relevan di tabel sementara. Kedua, Anda menanyakan kumpulan data lengkap. Data yang dikumpulkan di bagian pertama memberi Anda cara mudah untuk menghitung jumlah total baris dan ID baris pada halaman tertentu.

Berikut adalah contoh kasar untuk SQL Server. Perhatikan bahwa contoh tidak bergantung pada fungsi jendela seperti row_number() , yang tidak tersedia di MySQL.

create table #id_list (rn int identity, pk int);

insert   #id_list
         (pk)
select   customer_id
from     customers
where    name like '%Joe%';

select   (select  count(*) from #id_list) as total_rows
,        rn -- The row's number
,        name
,        birth_date
,        ... -- Other columns
from     #id_list id
join     customer c
on       c.pk = c.customer_id
where    rn between 15 and 29; -- Second 15-row page 

Omong-omong, jika memungkinkan, saya akan mengembalikan persyaratan ini kepada desainer untuk memeriksa ulang apakah ini layak untuk menghabiskan banyak waktu. Jauh lebih mudah jika Anda tidak perlu menampilkan jumlah total baris.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bisakah saya menggabungkan dua database menjadi satu di Mysql jika keduanya memiliki skema yang sama?

  2. Pilih kamar yang tersedia antara dua tanggal

  3. Apa perbedaan antara operator <> dan !=di MySQL?

  4. Mengapa kode PHP dieksekusi sebelum HTML?

  5. MySql.Data.MySqlClient.MySqlConfiguration' tidak mengandung definisi untuk 'Standar' Lancar NHibernate