Để lấy các hàng ngẫu nhiên trong MySQL, sử dụng ORDER BY RAND() kết hợp với LIMIT. Khi cột chứa giá trị phân cách bằng dấu phẩy, bạn có thể lọc trước bằng NOT IN.
Ví dụ minh họa
Tạo bảng và chèn dữ liệu:
mysql> CREATE TABLE DemoTable1835 (ListOfIds VARCHAR(20));
mysql> INSERT INTO DemoTable1835 VALUES('10,20,30'),('70,80,90'),('45,67,89'),('98,96,49');
Lấy 2 hàng ngẫu nhiên loại trừ các giá trị chứa 10, 20, 70:
mysql> SELECT * FROM DemoTable1835
WHERE ListOfIds NOT IN(10,20,70)
ORDER BY RAND()
LIMIT 2;
Kết quả (ngẫu nhiên):
+-----------+ | ListOfIds | +-----------+ | 98,96,49 | | 45,67,89 | +-----------+
Lưu ý: ORDER BY RAND() có hiệu suất kém trên bảng lớn. Với dữ liệu lớn, hãy cân nhắc các phương pháp tối ưu khác như lấy ID ngẫu nhiên trong ứng dụng.