Kỹ thuật
Kết hợp DISTINCT, ORDER BY RAND() và LIMIT để lấy mẫu ngẫu nhiên các giá trị duy nhất.
1. Tạo bảng
mysql> create table DemoTable (
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name varchar(40)
);
Query OK, 0 rows affected (0.54 sec)
2. Chèn dữ liệu (có trùng lặp)
mysql> insert into DemoTable(Name) values('John Doe');
mysql> insert into DemoTable(Name) values('Chris Brown');
mysql> insert into DemoTable(Name) values('Adam Smith');
mysql> insert into DemoTable(Name) values('John Doe');
mysql> insert into DemoTable(Name) values('John Doe');
mysql> insert into DemoTable(Name) values('Chris Brown');
mysql> insert into DemoTable(Name) values('Adam Smith');
3. Xem dữ liệu
mysql> select * from DemoTable;
+----+-------------+ | Id | Name | +----+-------------+ | 1 | John Doe | | 2 | Chris Brown | | 3 | Adam Smith | | 4 | John Doe | | 5 | John Doe | | 6 | Chris Brown | | 7 | Adam Smith | +----+-------------+ 7 rows in set (0.00 sec)
4. Truy vấn lấy 3 tên distinct ngẫu nhiên
mysql> select distinct Name from DemoTable order by rand() limit 3;
Kết quả (mẫu):
+-------------+ | Name | +-------------+ | Chris Brown | | John Doe | | Adam Smith | +-------------+ 3 rows in set (0.00 sec)
Lưu ý: ORDER BY RAND() có thể chậm trên bảng lớn. Cân nhắc các phương pháp khác (ví dụ: lấy ID ngẫu nhiên trong ứng dụng).