实战演练 | 数据库中检索奇数或偶数行的简单方法
从表中仅选择奇数行或偶数行听起来像是你永远不必做的事情,除非你自行这样做。在谷歌快速搜索一下,可以证实这事情是经常有人会做的,但是,很少有数据库从业者知道如何做,他们总是在线数据库社区求助寻找答案。作为本文的读者,你可以省去在数据库论坛中寻找解决方案的麻烦,因为我们今天将在这里直接说明如何能做到。
选择合适的目标列
在我们谈论“偶数行或奇数行”之前,我们必须按我们要拆分数据的列对行进行排序。理想情况下,它的数据应该是数字、而且是唯一的并按升序排序。因此,像主键这样的自增列是完美的选项。否则,你可能需要使用 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 天!
往期回顾
Navicat 被投毒了 | 真相来了!
盗版引发设备瘫痪
Navicat 16.1 为OceanBase 社区版
Navicat 成为信通院数据库创新实验室成员
Navicat 学术伙伴计划 - 免费教育版申请
Navicat 技术智库 - 实战演练与各类热门问题解答
免费试用攻略 | Navciat 16 数据库管理工具
实战演练 | 数据库中检索奇数或偶数行的简单方法相关推荐
- mysql数据库取奇数行数据_查询数据库中的奇数行和偶数行
功能奇数次执行和偶数次执行时的结果不同的故障复盘 场景:将数据库查询到的数据,写入一个xls文件.完成后,多点几次,发现一个问题,偶数次生成的文件比较小,打开一看,里面只有一行,只有标题,没有内容.分 ...
- java杨辉三角奇数_杨辉三角中的奇数与偶数
4-38 数学教 学 2009年第 4期 杨辉三角中的奇数与偶数 430061湖北省武昌实验中学 王先东 1.问题的提出 第 0行 杨辉三角是大家非常熟悉的,如果我们把杨 辉三角中的奇数换成1,偶数换 ...
- 加密数据的检索_透明地持久保存并从数据库中检索加密的数据
加密数据的检索 自从我在这里发表上一个帖子以来已经有两个多月了,但是今年六月和七月非常忙碌而密集. 首先, Confitura的组织(欧洲最大的Java开发人员免费会议)参加了我所有的免费晚会,然后在 ...
- 透明地持久保存并从数据库中检索加密的数据
自从我在这里发表上一个帖子以来已经有两个多月了,但是今年六月和七月非常忙碌而密集. 首先, Confitura的组织(欧洲最大的Java开发人员免费会议)参加了我所有的免费晚会,然后在相当紧张的住院期 ...
- 是否可以在SQLite数据库中一次插入多行?
在MySQL中,您可以插入多行,如下所示: INSERT INTO 'tablename' ('column1', 'column2') VALUES('data1', 'data2'),('data ...
- android 图片存储读取数据库中,如何在android中存储(位图图像)并从sqlite数据库中检索图像?...
设置数据库public class DatabaseHelper extends SQLiteOpenHelper { // Database Version private static final ...
- numpy序列预处理dna序列_【陪你学生信】七、在数据库中检索相似的序列
一.相似度Similarity 序列的分析离不开相似度这个指标,相似度比较高的序列往往具有相似的结构.执行相似的功能.所以用未知序列blast得到的结果可以对未知序列进行推测. 当两个序列非常相似时, ...
- 各个数据库中,查询前n条记录的方法
一.各个数据库中,查询前n条记录的方法 1.SQL查询前10条的方法为: 1.select top X * from table_name 查询前X条记录,可以改成需要的数字,比如前10条. 2.se ...
- javascript判断日期奇偶_JavaScript判断奇数和偶数的两种方法
JavaScript是前端开发中必不可少的一部分,那你知道如何用JS判断一个数是奇数还偶数吗?这篇文章就给大家分享JS判断奇数和偶数的两种方法,有一定的参考价值,感兴趣的朋友可以参考一下. 方法一:用 ...
最新文章
- 如何进行网站的安全测试
- Thinking in java 笔记一
- 用Unity3D实现智能巡逻兵游戏
- oracle 换行符_python实现自动化报表(Oracle/plsql/Excel/多线程)
- 在RHEL6.2上,将一个分区开机自动挂载
- Java笔记-String.format的使用(可用于格式化字符串)
- CetnOS 6.7安装Hive 1.2.1
- 乘风破浪:LeetCode真题_027_Remove Element
- 3月22 关于CSS
- 基于FPGA的视频处理
- mysql联合主键及用法
- Maya菜单中英文对照表(一)
- tp5实现短信注册,调用第三方接口,电话通知,和短信通知都可以。
- VMware要求更新,系统更新后VMware打不开,要求更新
- Android x86是什么?,安卓X86是什么?和手机上的安卓系统有什么区别?
- Win10升级后执行系统封装(Sysprep)报错
- 2019风中劲草 思想政治理论冲刺背诵核心考点【超清】
- linux无法打开某些网页,Linux无法打开网页
- mysql智能停车场,jsp357智能停车场管理系统 双数据库版 mysql
- Google的脚本错误
热门文章
- 【深入理解TcaplusDB技术】入门Tcaplus SQL Driver
- mysql handlers_MySQL handler相关状态参数解释
- 线性规划——对偶问题、强弱对偶定理、KKT条件
- 【读书笔记】减法——完美无缺,不是增无可增,而是减无可减
- 软件测试简历自我评价范文,测试工程师求职简历自我评价范文
- <JVM下篇:性能监控与调优篇>03-JVM监控及诊断工具-GUI篇
- what this book can do for you ?
- Vue使用keep-alive,调用 $destory() ,页面不再被缓存的解决方法
- 如何使用LINQ链接数据库并操作数据库
- 以卖单车为例形象理解23种设计模式