Thủ thuật SQL

MySQL không có bất kì một cầu lệnh nào giúp chúng 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 sql sau sẽ giúp các bạn lấy ngẫu nhiên 1 kết quả từ table.

SELECT * FROM table 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 kết quả.
Nếu bạn muốn lấy N lần kết quả thì các bạn chỉ cần thay số chỉ định cho chữ N.

SELECT * FROM table  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, productLine
FROM products
ORDER BY RAND()
LIMIT 5;

Thủ thuật SQL

Tuy nhiên , kỹ thuật này chỉ thích hợp cho những table có ít dữ liệu, nếu như những table nào có dữ liệ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ẽ rất chậm.

Tuy nhiên nếu table 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, các bạn xem đ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 là 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.
Mình hy vọng rằng với những câu chữ mà mình viết trong bài viết này, sẽ giúp các bạn hiểu rõ hơn. Nếu có điều gì gây khó hiểu , thì các bạn đừng ngần ngại để lại comment để có thể cùng nhau thảo luận nhé.

Chúc các bạn thành công !

ĐỂ LẠI PHẢN HỒI CỦA BẠN TẠI ĐÂY

Phản hồi về bài viết này

NO COMMENTS

LEAVE A REPLY


*