Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

SQL nhận ROW_NUMBER và COUNT trên mọi yêu cầu SELECT

Điều này có lẽ là để cho phép phân trang. Việc hiển thị tổng số hàng có thể thực sự tốn kém.

Một cách mà tôi đã tìm thấy để hoạt động tốt trên nhiều loại cơ sở dữ liệu là chia công việc thành hai phần. Đầu tiên, bạn thu thập ID của các hàng có liên quan trong một bảng tạm thời. Thứ hai, bạn truy vấn tập dữ liệu đầy đủ. Dữ liệu được thu thập trong phần đầu tiên cung cấp cho bạn một cách dễ dàng để tính toán tổng số hàng và ID của các hàng trên một trang nhất định.

Đây là một ví dụ sơ bộ cho SQL Server. Lưu ý rằng ví dụ này không dựa trên các hàm cửa sổ như row_number() , không có sẵn trong 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 

Nhân tiện, nếu khả thi, tôi sẽ gửi lại yêu cầu này cho các nhà thiết kế để kiểm tra lại xem điều này có đáng để dành nhiều thời gian hay không. Sẽ đơn giản hơn nhiều nếu bạn không cần hiển thị tổng số hàng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. groupby và count hoạt động như thế nào trong sql

  2. MYSQL - So sánh NOW () và một ngày tại Paris TimeZone trong một yêu cầu

  3. Thiết kế cơ sở dữ liệu công thức cần bao gồm các thành phần cũng như các công thức phụ

  4. MySQL - GROUP_CONCAT với các liên kết

  5. Tại sao PHP PDO DSN lại là một định dạng khác cho MySQL so với PostgreSQL?