Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Chọn ngẫu nhiên các hàng distinct trong bảng MySQL

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).