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

Chỉ chọn 5 hàng ngẫu nhiên trong 50 mục cuối cùng Với MySQL?

Đối với điều này, hãy sử dụng ORDER BY RAND () với truy vấn con. Đầu tiên chúng ta hãy tạo một bảng -

mysql> create table DemoTable1853
     (
     UserId int NOT NULL AUTO_INCREMENT,
     PRIMARY KEY(UserId)
     );
Query OK, 0 rows affected (0.00 sec)

Chèn một số bản ghi vào bảng bằng lệnh chèn -

mysql> insert into DemoTable1853 values(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),();
Query OK, 58 rows affected (0.00 sec)
Records: 58  Duplicates: 0  Warnings: 0

Hiển thị tất cả các bản ghi từ bảng bằng câu lệnh select -

mysql> select * from DemoTable1853;

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

+--------+
| UserId |
+--------+
|      1 |
|      2 |
|      3 |
|      4 |
|      5 |
|      6 |
|      7 |
|      8 |
|      9 |
|     10 |
|     11 |
|     12 |
|     13 |
|     14 |
|     15 |
|     16 |
|     17 |
|     18 |
|     19 |
|     20 |
|     21 |
|     22 |
|     23 |
|     24 |
|     25 |
|     26 |
|     27 |
|     28 |
|     29 |
|     30 |
|     31 |
|     32 |
|     33 |
|     34 |
|     35 |
|     36 |
|     37 |
|     38 |
|     39 |
|     40 |
|     41 |
|     42 |
|     43 |
|     44 |
|     45 |
|     46 |
|     47 |
|     48 |
|     49 |
|     50 |
|     51 |
|     52 |
|     53 |
|     54 |
|     55 |
|     56 |
|     57 |
|     58 |
+--------+
58 rows in set (0.00 sec)

Đây là truy vấn để chỉ chọn 5 hàng ngẫu nhiên trong 50 mục nhập cuối cùng -

mysql> select tbl.*
     from (select tbl1.*
           from DemoTable1853 tbl1
           order by UserId DESC
           LIMIT 50
          ) tbl
     order by rand()
     limit 5;

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

+--------+
| UserId |
+--------+
|     19 |
|     24 |
|     43 |
|     36 |
|     48 |
+--------+
5 rows in set (0.00 sec)