2013-08-16 29 views
5

Đây là câu hỏi của tôi:Lựa chọn hàng loạt các hồ sơ với MySql

SELECT @curRow := @curRow + 1 AS row_number, 
    myTable.id 
FROM myTable 
JOIN (SELECT @curRow := 0) r 

này mang lại cho tôi kết quả với all các bản ghi trong myTable. Ví dụ

row_number id 
---------- ------- 
    1   100 
    2   101 
    3   102 
    4   103 
    5   104 
    6   105 
    7   105 
    8   106 
    9   107 
    10   108 
    11   109 
    12   110 
    13   111 
    ... 

Nếu tôi chỉ cần chọn các hàng giữa 6 to 10 thì sao? Việc chọn 1 to 5 thật dễ dàng với LIMIT 5, nhưng cách chọn dải hàng ở giữa?

+0

'LIMIT' cũng hỗ trợ một bù đắp. _Với hai đối số, đối số đầu tiên xác định độ lệch của hàng đầu tiên cần trả về và đối số thứ nhất chỉ định số hàng tối đa cần trả về. Độ lệch của hàng đầu tiên là 0 (không phải 1): _ http://dev.mysql.com/doc/refman/5.0/en/select.html –

Trả lời

4
SELECT @curRow := @curRow + 1 AS row_number, 
    myTable.id 
FROM myTable LIMIT 5 OFFSET 6; 

Sử dụng OFFSET với giới hạn.

GIỚI HẠN quyết định số lượng hàng sẽ đến sau khi thực thi truy vấn và bù trừ quyết định từ đó ghi lại các bản ghi sẽ là bộ lọc.

Read this tutorial for offset.

7
SELECT @curRow := @curRow + 1 AS row_number, myTable.id 
    FROM myTable LIMIT 6, 5; 

này sẽ hiển thị hồ sơ 6, 7, 8, 9, 10

Sau đó, bạn nhận được kết quả như

row_number id 
---------- ------- 
    6   105 
    7   105 
    8   106 
    9   107 
    10   108 
Các vấn đề liên quan