PHP: Cách lấy ngẫu nhiên bản ghi bằng hàm RAND()

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

Trong trường hợp ta cần phải chọn lựa dữ liệu ngẫu nhiên từ các bảng trong database, ví dụ như chọn một số bài viết ngẫu nhiên từ trang blog hoặc chọn ngẫu nhiên một số sản phẩm và hiển thị chúng trên các sidebar, chọn lựa hình ảnh ngẫu nhiên từ gallery, ...

Cách chọn lựa dữ liệu ngẫu nhiên từ MySQL SelectMySQL không có bất kỳ một câu lệnh nào giúp ta lấy dữ liệu ngẫu nhiên, nhưng chúng ta sẽ tận dụng hàm RAND(). Đoạn mã sau sẽ giúp các bạn lấy ngẫu nhiên 1 bản ghi từ bảng sanpham.

SELECT * FROM sanpham ORDER BY RAND() LIMIT 1;

Trong đoạn truy vấn bên trên, ORDER BY sẽ sắp xếp kết quả theo thứ tự ngẫu nhiên, và LIMIT 1 sẽ chỉ lấy 1 bản ghi.

Nếu muốn lấy N bản ghi (N là một số nguyên dương) thì ta làm như sau:

SELECT * FROM tên_bảng ORDER BY RAND()  LIMIT N

Vi dụ như nếu muốn lấy 5 sản phẩm ngẫu nhiên, chúng ta viết câu truy vấn như sau:

SELECT productName FROM sanpham ORDER BY RAND() LIMIT 5;

Cách chọn lựa dữ liệu ngẫu nhiên từ MySQL Select

Lưu ý: kỹ thuật này chỉ thích hợp cho những bảng có ít dữ liệu, nếu không thì nó sẽ tốn nhiều thời gian cho việc lấy ngẫu nhiên, do đó kết quả trả về sẽ chậm.

Trong trường hợp bảng nào có cột ID với giá trị trải dài từ 1 đến N lần thi chúng ta có thể sử dụng kỹ thuật như sau:

- Đầu tiên, chúng ta sẽ chọn ngẫu nhiên số lượng trong khoảng từ 1 đến N

- Kế tiếp, chúng ta sẽ lấy dữ liệu ngẫu nhiên dựa trên số lượng ngẫu nhiên này.

Để dễ hiểu, ta xét đoạn truy vấn sql sau:

SET @ID = FLOOR(RAND( )* N) + 1;

SELECT *  FROM table WHERE ID >= @ID LIMIT 1

Kỹ thuật này sẽ trả về kết quả nhanh hơn bởi vì:

- Nó sử dụng cột ID để đánh dấu chỉ mục.

- MySQL không cần phải sắp xếp lại toàn bộ table.

» Tiếp: declare
« Trước: Download AppServ 2.5.9
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!