mysql 练习笔记

从一个数据表中找出连续n条满足条件的记录

例子demo 从数据表中找出连续三条或者三次以上分数超过80分的记录

MariaDB [testdatabase]> select * from class;
+----+-----------+---------+-------+
| id | classname | teacher | grade |
+----+-----------+---------+-------+
|  0 | 101       | peter   |    85 |
|  1 | 102       | john    |    86 |
|  2 | 103       | tom     |    87 |
|  3 | 104       | mango   |    88 |
|  4 | 101       | peter   |    65 |
|  5 | 106       | peter   |    95 |
|  6 | 105       | haden   |    96 |
|  7 | 107       | james   |    77 |
|  8 | 108       | jakie   |    88 |
|  9 | 109       | tom     |    85 |
| 10 | 112       | mango   |    76 |
| 11 | 113       | jula    |    77 |
| 12 | 114       | john    |    78 |
+----+-----------+---------+-------+
SQL语句如下
select * from class where id in (
  select DISTINCT n1.id from class n1,class n2,class n3 where
     (n1.grade>80 and n2.grade>80 and n3.grade>80 and
     ((n1.id + 1= n2.id and n2.id +1 = n3.id) OR
      (n1.id-1=n2.id and n1.id+1=n3.id) OR
      (n1.id-1=n2.id and n1.id-2=n3.id) )
     ) order by n1.id )

输出结果

+----+-----------+---------+-------+
| id | classname | teacher | grade |
+----+-----------+---------+-------+
|  0 | 101       | peter   |    85 |
|  1 | 102       | john    |    86 |
|  2 | 103       | tom     |    87 |
|  3 | 104       | mango   |    88 |
+----+-----------+---------+-------+

转载于:https://www.cnblogs.com/mangojun/p/11492065.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值