转载:MySQL数据中每隔18行取5行

该博客展示了如何使用 MySQL 查询语句从 `result` 表中每隔18行选取5行数据,主要涉及行编号的计算与筛选。查询首先通过 `ORDER BY` 对数据进行排序,然后利用变量 `@n` 添加行号,并依据行号模18的值进行筛选,以获取所需行。这种方法在处理大型数据集时,可以用于实现特定间隔的数据采样。
摘要由CSDN通过智能技术生成

原始链接:

 

mysql> select * from (select @n:=@n+1 as n, a.* from (select * from result order by subjectno,studentresult desc)a,(select @n:=0)b)c where c.n%18<6 and c.n%18!=0;

result表定义如下:

mysql> desc result;
+---------------+----------+------+-----+---------+-------+
| Field         | Type     | Null | Key | Default | Extra |
+---------------+----------+------+-----+---------+-------+
| StudentNo     | int(4)   | NO   |     | NULL    |       |
| SubjectNo     | int(4)   | NO   | MUL | NULL    |       |
| ExamDate      | datetime | NO   |     | NULL    |       |
| StudentResult | int(4)   | NO   |     | NULL    |       |
+---------------+----------+------+-----+---------+-------+
4 rows in set (0.00 sec)

首先select @n:=@n+1 as n,a.* from (select * from result order by subjectno,studentresult desc) a, (select @n:=0)b给每行添加序号

结果如下:

mysql> select @n:=@n+1 as n,a.* from (select * from result order by subjectno,studentresult desc) a, (select @n:=0)b
    -> ;
+------+-----------+-----------+---------------------+---------------+
| n    | StudentNo | SubjectNo | ExamDate            | StudentResult |
+------+-----------+-----------+---------------------+---------------+
|    1 |      1017 |         1 | 2013-11-11 16:00:00 |           100 |
|    2 |      1015 |         1 | 2013-11-11 16:00:00 |            99 |
|    3 |      1016 |         1 | 2013-11-11 16:00:00 |            97 |
|    4 |      1008 |         1 | 2013-11-11 16:00:00 |            96 |
|    5 |      1000 |         1 | 2013-11-11 16:00:00 |            94 |
|    6 |      1003 |         1 | 2013-11-11 16:00:00 |            91 |
|    7 |      1007 |         1 | 2013-11-11 16:00:00 |            87 |
|    8 |      1012 |         1 | 2013-11-11 16:00:00 |            86 |
|    9 |      1004 |         1 | 2013-11-11 16:00:00 |            84 |
|   10 |      1010 |         1 | 2013-11-11 16:00:00 |            83 |
|   11 |      1005 |         1 | 2013-11-11 16:00:00 |            82 |
|   12 |      1006 |         1 | 2013-11-11 16:00:00 |            82 |
|   13 |      1001 |         1 | 2013-11-11 16:00:00 |            76 |
|   14 |      1013 |         1 | 2013-11-11 16:00:00 |            73 |
|   15 |      1009 |         1 | 2013-11-11 16:00:00 |            67 |
|   16 |      1014 |         1 | 2013-11-11 16:00:00 |            64 |
|   17 |      1011 |         1 | 2013-11-11 16:00:00 |            62 |
|   18 |      1002 |         1 | 2013-11-11 16:00:00 |            61 |
|   19 |      1001 |         2 | 2012-11-10 10:00:00 |            93 |

最后序号对18取模值为12345

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值