Computer >> Máy Tính >  >> Lập trình >> MySQL

Truy vấn MySQL để chọn một hàng cụ thể và một hàng ngẫu nhiên khác?

Để chọn một hàng cụ thể và một hàng ngẫu nhiên khác, bạn có thể sử dụng ORDER BY và RAND (). Đầu tiên chúng ta hãy tạo một bảng mẫu:

mysql> create table oneSpecificRowAndOtherRandom
   -> (
   -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   -> Name varchar(20)
   -> );
Query OK, 0 rows affected (0.72 sec)

Sau đây là truy vấn để chèn một số bản ghi trong bảng bằng cách sử dụng lệnh insert:

mysql> insert into oneSpecificRowAndOtherRandom(Name) values('Larry');
Query OK, 1 row affected (0.56 sec)

mysql> insert into oneSpecificRowAndOtherRandom(Name) values('Sam');
Query OK, 1 row affected (0.13 sec)

mysql> insert into oneSpecificRowAndOtherRandom(Name) values('Mike');
Query OK, 1 row affected (0.12 sec)

mysql> insert into oneSpecificRowAndOtherRandom(Name) values('Carol');
Query OK, 1 row affected (0.15 sec)

mysql> insert into oneSpecificRowAndOtherRandom(Name) values('Chris');
Query OK, 1 row affected (0.21 sec)

mysql> insert into oneSpecificRowAndOtherRandom(Name) values('Bob');
Query OK, 1 row affected (0.13 sec)

mysql> insert into oneSpecificRowAndOtherRandom(Name) values('David');
Query OK, 1 row affected (0.13 sec)

Sau đây là truy vấn để hiển thị các bản ghi từ bảng bằng lệnh select:

mysql> select *from oneSpecificRowAndOtherRandom;

Điều này sẽ tạo ra kết quả sau

+----+-------+
| Id | Name  |
+----+-------+
| 1  | Larry |
| 2  | Sam   |
| 3  | Mike  |
| 4  | Carol |
| 5  | Chris |
| 6  | Bob   |
| 7  | David |
+----+-------+
7 rows in set (0.00 sec)

Sau đây là truy vấn để chọn một hàng cụ thể và một hàng ngẫu nhiên khác:

mysql> select *from oneSpecificRowAndOtherRandom ORDER BY (Id= 5) DESC, RAND() LIMIT 0,3;

Điều này sẽ tạo ra kết quả sau

+----+-------+
| Id | Name  |
+----+-------+
| 5  | Chris |
| 1  | Larry |
| 2  | Sam   |
+----+-------+
3 rows in set (0.05 sec)

Hãy để chúng tôi chạy lại cùng một truy vấn để hiển thị các bản ghi ngẫu nhiên vì chúng tôi đã sử dụng RAND ():

mysql> select *from oneSpecificRowAndOtherRandom ORDER BY (Id= 5) DESC, RAND() LIMIT 0,3;

Điều này sẽ tạo ra kết quả sau

+----+-------+
| Id | Name  |
+----+-------+
| 5  | Chris |
| 2  | Sam   |
| 4  | Carol |
+----+-------+
3 rows in set (0.00 sec)