仅选择最后 50 个条目中的 5 个随机行(使用 MySQL)?


为此,请结合子查询使用 ORDER BY RAND()。我们首先创建一个表 -

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

使用 insert 命令向表中插入一些记录 -

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

使用 select 语句从表中显示所有记录 -

mysql> select * from DemoTable1853;

这将产生以下输出 -

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

以下是仅选择最后 50 个条目中的 5 个随机行的查询 -

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

这将产生以下输出 -

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

更新于: 2019 年 12 月 26 日

323 次浏览

职业生涯进阶

通过完成课程获得认证

开始学习
广告