实战演练 | 数据库中检索奇数或偶数行的简单方法
从表中仅选择奇数行或偶数行听起来像是你永远不必做的事情,除非你自行这样做。在谷歌快速搜索一下,可以证实这事情是经常有人会做的,但是,很少有数据库从业者知道如何做,他们总是在线数据库社区求助寻找答案。作为本文的读者,你可以省去在数据库论坛中寻找解决方案的麻烦,因为我们今天将在这里直接说明如何能做到。
选择合适的目标列
在我们谈论“偶数行或奇数行”之前,我们必须按我们要拆分数据的列对行进行排序。理想情况下,它的数据应该是数字、而且是唯一的并按升序排序。因此,像主键这样的自增列是完美的选项。否则,你可能需要使用 ORDER BY 子句编写子查询,然后从中进行选择。
例如,让我们在 Navicat Premium 16 的表设计器中打开 classicmodels 示例数据库的 orders 表。我们可以看到它的 PK(orderNumber 列)不是自动递增的,未选中的“自动递增”复选框就是证明:
但是,以网格视图打开表会显示 orderNumber 值按升序排列:
因此,我们可以直接针对表编写查询。
数据库解决方案
查找具有奇数或偶数值的记录的最简单方法是将列值除以 2 并检查余数。余数 0 表示偶数,而余数是奇数则表示奇数。但是,就像许多数据库任务一样,如何计算余数取决于你使用的数据库类型。
在 PostgreSQL、MySQL 和 Oracle 中,我们可以使用 MOD() 函数来检查余数:
以下是查找指定列具有偶数值的行的一般查询语法:
SELECT * FROM table_name WHERE mod(column_name,2) = 0;
此语法将查找目标列具有奇数值的行:
SELECT * FROM table_name WHERE mod(column_name,2) <> 0;
SQL Server 没有 MOD 函数。反而,它提供了 % 取模运算符。
以下是查找指定列具有偶数值的行的一般查询语法:
SELECT * FROM table_name where column_name % 2 = 0;
This syntax will find rows where our target column has odd values:
SELECT * FROM table_name where column_name % 2 <> 0;
案例
让我们首先在 SQL 中,然后在 SQL Server 中,针对 classicmodels 示例数据库的 orders 表尝试运行上述每个语句。
首先,我们将检索偶数行:
接下来,我们将只获取奇数行:
如前所述,SQL Server 没有 MOD 函数,因此最好使用 % 取模运算符。
偶数行:
奇数行:
总结
本文提供了一种从各种数据库中检索奇数或偶数行的简单方法,方法是检查目标列值除以 2 后的余数,既简单又有效。 如果你对 Navicat Premium 感兴趣,可以免费试用 14 天!
往期回顾
相关文章
- java 逐行读取csv文件存入mysql数据库
- MySQL数据库Binlog解析工具--binlog2sql
- 电子电气架构——怎样在CANoe用一个诊断数据库将请求发送不同的网络
- 采用异步来实现重新连接服务器或者重新启动服务 C#中类的属性的获取 SignalR2简易数据看板演示 C#动态调用泛型类、泛型方法 asp .net core Get raw request. 从壹开始前后端分离[.NetCore 不定期更新] 38 ║自动初始化数据库
- 数据库函数--nvl、coalesce、decode比较
- 完整备份万网sql server数据库到本地的2种方法(喜欢第2种)
- Oracle数据库误操作回滚到指定的时间点方法
- Oracle数据库中的优化方案
- sqlite数据库文件提示损坏修复方法
- mysql 之 一个库中所有表复制到另一个数据库中的方法和工具
- 数据库高并发解决方法总结
- cmd启动数据库时,出现 (无法启动此程序,因为计算机中丢失VCRUNTIME140_1.dll 尝试重新安装此程序以解决此问题 )解决方法。
- php pdo对象使用详解: 连接数据库与exec方法
- Node嵌入式数据库NeDB及遇到问题
- 通过jdbc获取数据库中的表结构 主键 各个表字段类型及应用生成实体类
- 快速备份sqlserver2005以上版本数据库的方法-摘自网络
- HBase 数据库检索性能优化策略--转
- 【数据库学习笔记】——操作sqlite(增删改查)以及cursor的方法介绍
- docker-compose备份数据库命令,在crontab定时任务中不生效问题,解决方法
- 达梦数据库大规模并行处理MPP集群搭建方法
- 数据库事务的四大特性以及事务的隔离级别