2012-01-08 50 views
17

thể trùng lặp:
Selecting Random Rows in MySQLChọn hàng ngẫu nhiên từ bảng mysql

tôi là tạo ra một ứng dụng web đơn giản sử dụng PHP và MySQL. Trong đó, tôi cần phải chọn ngẫu nhiên một tập hợp các hàng nhỏ từ một bảng theo thứ tự ngẫu nhiên. Làm thế nào tôi có thể đạt được điều đó bằng cách sử dụng MySQL?

+2

Hãy tìm kiếm trước khi đặt câu hỏi. Tìm kiếm tiêu đề chính xác của câu hỏi của bạn mang lại [this] (http://stackoverflow.com/questions/1283640) và nhiều câu hỏi tương tự khác. – DaveRandom

+0

[MySQL chọn 10 hàng ngẫu nhiên từ 600K hàng nhanh] (https://stackoverflow.com/q/4329396/6521116) –

Trả lời

44
SELECT * FROM table ORDER BY RAND() LIMIT 10; 

Edit:

thông tin hữu ích về MySQL RAND() chức năng có thể được tìm thấy here.

+0

Ouch ... Tôi đã có> 500 triệu hàng! Đó là một chút chậm ... –

+2

Có các tùy chọn biểu diễn khác, nếu bạn có một khóa chính tuần tự, hãy tính toán trước một loạt các ID trong ngôn ngữ bạn chọn và thực hiện lệnh SELECT ... WHERE id IN (x) ' –

+0

Query' chọn count (*) từ người dùng, 'trả về 10293453. Truy vấn' SELECT id FROM users ORDER BY RAND() LIMIT 10; 'chạy 5 giây. – klay

5
select * from table order by rand() limit 10 

Lưu ý rằng order by rand() với tập dữ liệu lớn rất chậm nhưng trong trường hợp của bạn không thành vấn đề.

3

bạn có thể làm điều đó bằng cách sử dụng hàm RAND().

SELECT questine FROM tablename ORDER BY RAND() LIMIT 10 

sẽ lựa chọn 10 questines một cách ngẫu nhiên theo giả định các questine được lưu trữ dưới sân questine

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