2009-08-20 42 views
8

Giả sử tôi xác định một bí danh 'đếm' trong Truy vấn Chọn của tôi và tôi muốn giới hạn số tiền được trả về đếm/5 (hoặc 20% của bảng).Mysql - GIỚI HẠN theo Tỷ lệ phần trăm?

Làm thế nào tôi có thể làm điều này? Mysql dường như không có gì ngoài số nguyên, chứ không phải chức năng.

Trả lời

12

Đúng. Mệnh đề LIMIT lấy một giá trị bù trừ và một số hàng, chứ không phải một tỷ lệ phần trăm. Bạn đang nghĩ đến Microsoft SQL Server, hỗ trợ SELECT TOP 20 PERCENT ... (lưu ý rằng không phải LIMIT hoặc TOP được chỉ định trong SQL chuẩn).

tôi sẽ làm điều này trong hai truy vấn:

SELECT COUNT(*) FROM MyTable WHERE ...conditions... 

SELECT * FROM MyTable WHERE ...conditions... ORDER BY ...order... LIMIT ? 

Thay tham số ? với số lượng/5.

Bạn không cần phải giải quyết mọi vấn đề trong một truy vấn duy nhất.

+0

Chỉ cần thêm, tôi tin rằng chạy hai truy vấn này không * không * gây ra đáng kể trên không, vì MySQL nên lưu lại kết quả của truy vấn đầu tiên và truy vấn thứ hai sẽ thực sự chạy nhanh hơn rất nhiều. – DisgruntledGoat

5

mệnh đề LIMIT có thể lấy 2 đối số và phải là hằng số nguyên.

bạn có thể thử một cái gì đó giống như Look này

SET @skip=1; SET @numrows=(select count(*) div 5 from tbl); 
PREPARE STMT FROM 'SELECT * FROM tbl LIMIT ?, ?'; 
EXECUTE STMT USING @skip, @numrows; 
Các vấn đề liên quan