2012-04-10 38 views
10

Hey Guyz Đây có phải là có thể để có được tổng số hàng đếm với giới hạn bù đắpĐây có phải là có thể để có được tổng số hàng đếm với giới hạn bù đắp

Kịch bản

SELECT * FROM users limit 0,5; 

Query này chứa 300 hồ sơ nhưng vấn đề là nếu tôi gọi truy vấn này với bù đắp kết quả sẽ được hiển thị chỉ có 5 hồ sơ và tôi không muốn viết một truy vấn trong thời gian hai lần. một cho giới hạn phân trang và khác cho tổng không đếm kỷ lục ...

Tôi không muốn điều này

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

tôi phải nhập truy vấn này hoặc giúp được chắc chắn đánh giá cao

+0

1) Tại sao không chạy riêng chúng? 2) Bạn có thêm mệnh đề 'limit' trong truy vấn' count' không? –

+1

Đây là ví dụ ngắn về truy vấn và tôi có truy vấn lớn vì sao tôi không muốn viết truy vấn trong hai lần @MostyMostacho –

Trả lời

7

Bạn có thể sử dụng SQL_CALC_FOUND_ROWS như thế này

SELECT SQL_CALC_FOUND_ROWS * FROM users limit 0,5; 

Nó nhận số hàng trước khi áp dụng bất kỳ mệnh đề LIMIT nào. Nó cần truy vấn khác để tìm nạp kết quả nhưng truy vấn đó có thể chỉ đơn giản là

SELECT FOUND_ROWS() 

và do đó bạn không phải lặp lại truy vấn phức tạp của mình.

Các vấn đề liên quan