美文网首页oracle的基本sql介绍学习小殿SQL用法
SQL分别查询表奇偶行(无行号,表结构不修改)

SQL分别查询表奇偶行(无行号,表结构不修改)

作者: 司小幽 | 来源:发表于2017-06-24 11:19 被阅读160次

需求

有一张表,表内容如下所示:

test表--MySQL test表--Oracle

注意点
①如上所示,表中没有标识关于行号的字段,比如id神马的
②不准修改表结构,比如使用alter语句

思路

查了一些资料,发现具体的思路大概是,自行生成自增的行号列,然后根据模2的结果进行奇偶的筛选。顺着这个思路下去,会发现oracle中的具体思路是直接使用其提供的row_number函数,而mysql中思路其实差不多,只不过是曲线救国,因为mysql并没有提供row_number函数,所以需要你自己先去实现它,然后和oracle的操作方法就差不多了。

金手指

1.row_number
ROW_NUMBER() OVER(partition by col1 order by col2) 表示根据col1分组,在分组内部根据col2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内是连续且唯一的)。
2.Mod
语法:MOD(number,divisor)
参数
Number 为被除数。
Divisor 为除数。如果 divisor 为零,函数 MOD 返回值 为原来number
说明
函数MOD可以借用函数 INT 来表示:
MOD(n, d) = n - d*INT(n/d)

实现

Oracle

Oracle中通过查询资料,发现也可以分为两种,一种比较中规中矩点(长一点哈~

select * from (select row_number() over (order by NAME asc) a,t.* from test t) where mod(a,2)=0;

算是严格按照row_number使用路子来滴:

先对列NAME按照升序,再为每条记录返回一个序列号:

还有一种简洁点,如下所示:

select * from (select rownum row_num, t.* from test t)
 where mod(row_num, 2)=1

MySQL

mysql中其实是借助于变量的形式,进行近似row_number的实现,但是要注意的是如果想要重新查询的话,变量要初始化哦~

 set @row = 0;select * from (select @row:=case when @row is null then 1 else @row+1 end as RNr,name,age,class from test) t where t.RNr%2 = 0;

参考文献

  1. SQL查询奇数行、偶数行
  2. Mysql row number()排序函数的用法和注意
  3. oracle row_number()
  4. oracle mod 表达式
  5. 请问oracle如何查询奇数行数据

相关文章

  • SQL分别查询表奇偶行(无行号,表结构不修改)

    需求 有一张表,表内容如下所示: 注意点:①如上所示,表中没有标识关于行号的字段,比如id神马的②不准修改表结构,...

  • 数据库表行列转换

    行转列 创建表kecheng,并插入数据 查询该表,结构显示: 通过sql查询显示下图: SQL_A: SQL_B...

  • 数据库基础02

    SQL的作用 操作数据库(CREATE建表、DORP删表、ALTER修改表结构,SELECT查询表,增删改查) S...

  • MariaDB/MysSQL 批量修改表大小写

    1、执行SQL,查询所有表并拼装修改表名SQL 注意修改要修改的数据库名称,table_schema=’{data...

  • SQL 数据基本操作

    SQL 数据基本操作 创建表: 删除表: 增加信息: 修改信息: 数据删除: 数据查询: 其他操作(搜索 查询)基...

  • SQL (FMDB)

    SQL套餐 sql常用语句 创建表 查询 修改 删除 插入 删除表 FMDB 什么是FMDBFMDB是iOS平台的...

  • SQL查询单表数据(一)

    本节讲述 基本的 select 查询单表数据语句 1 从单表中查询所有的行和列 查询表中所有的数据 在 SQL 中...

  • 2021-01-16 - mysql优化

    分页优化 表结构如下 根据主键的查询排序 sql查询 会用到索引吗? 非主键的排序分页查询 sql查询 会用到索引...

  • MySQL基本操作

    SQL语句:结构化查询语言 DDL: 数据定义语言, 定义数据库对象:库、表、列、表结构 DML: 数据操作语言,...

  • SQL SERVER 查询表结构

网友评论

    本文标题:SQL分别查询表奇偶行(无行号,表结构不修改)

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