美文网首页
MySQL 跳过表中的n行

MySQL 跳过表中的n行

作者: 只是甲 | 来源:发表于2020-11-09 09:32 被阅读0次

备注:测试数据库版本为MySQL 8.0

一.需求

需要显示emp表中根据ename排序的基数行,跳过偶数行

二.解决方案

求出行号,然后通过mod取余函数跳过偶数行

-- 传统写法
select x.ename
from 
(
select  e.ename,
        (select count(*) from emp d where d.ename <= e.ename) rn
from emp e
order by e.ename
) x
where mod(rn,2) = 1;

-- MySQL 8.0分析函数写法
SELECT x.ename
from 
(
SELECT e.ename,
       row_number() over w as rn
from emp e
window w as ( order by e.sal )
) x
where mod(rn,2) = 1;

测试记录

mysql>
mysql> select x.ename
    -> from
    -> (
    -> select  e.ename,
    ->         (select count(*) from emp d where d.ename <= e.ename) rn
    -> from emp e
    -> order by e.ename
    -> ) x
    -> where mod(rn,2) = 1;
+--------+
| ename  |
+--------+
| ADAMS  |
| BLAKE  |
| FORD   |
| JONES  |
| MARTIN |
| SCOTT  |
| TURNER |
+--------+
7 rows in set (0.00 sec)

mysql> SELECT x.ename
    -> from
    -> (
    -> SELECT e.ename,
    ->        row_number() over w as rn
    -> from emp e
    -> window w as ( order by e.sal )
    -> ) x
    -> where mod(rn,2) = 1;
+--------+
| ename  |
+--------+
| SMITH  |
| ADAMS  |
| MARTIN |
| TURNER |
| CLARK  |
| JONES  |
| FORD   |
+--------+
7 rows in set (0.00 sec)

相关文章

  • MySQL 跳过表中的n行

    备注:测试数据库版本为MySQL 8.0 一.需求 需要显示emp表中根据ename排序的基数行,跳过偶数行 二....

  • 找回重置 root 密码

    编辑 MySQL 配置文件 /etc/my.cnf 在 [mysqld] 中增加一行,用来跳过授权表的验证skip...

  • MySQL获取行数

    在本教程中,您将学习在数据库中获取MySQL行计数的各种方法。 获取单个表的MySQL行计数 要获取单个表的行计数...

  • Linux面试题之:找回mysql5.7的root密码

    问题:如果忘记mysql5.7的root密码,如何找回?(滴滴) 1、进入mysql权限表,加语句跳过权限表 2、...

  • MySQL数据库root密码恢复

    停止MySQL服务 跳过授权表启动MySQL服务程序 修改root密码 以正常方式重启MySQL服务程序 示例:

  • InnoDB引擎的行锁和表锁

    在Mysql中,Innodb数据引擎支持行锁和表锁,Myisam数据引擎只支持表锁 1 行锁和表锁 行锁是通过索引...

  • MySQL语法模板 SQL语句:其他

    MySQL语法模板系列 修复表 检查表 校验表 创建表根据查询结果 删除表数据 插入数据 插入数据(存在的数据跳过...

  • 总结Mysql中的锁

    MySQL中的锁 概述 MyISAM支持表锁,InnoDB支持表锁和行锁,默认为行锁 表级锁:开销小,加锁快,不会...

  • mysql(SQL使用)

    mysql中的基本逻辑对象mysql有这么几种对象mysqld--->库---->表---->记录(由行和列组成)...

  • mysql分表,分区的区别和联系

    一,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看mysql分表的...

网友评论

      本文标题:MySQL 跳过表中的n行

      本文链接:https://www.haomeiwen.com/subject/nuttmktx.html