从表中仅选择奇数行或偶数行听起来像是你永远不必做的事情,除非你自行这样做。在谷歌快速搜索一下,可以证实这事情是经常有人会做的,但是,很少有数据库从业者知道如何做,他们总是在线数据库社区求助寻找答案。作为本文的读者,你可以省去在数据库论坛中寻找解决方案的麻烦,因为我们今天将在这里直接说明如何能做到。

选择合适的目标列

在我们谈论“偶数行或奇数行”之前,我们必须按我们要拆分数据的列对行进行排序。理想情况下,它的数据应该是数字、而且是唯一的并按升序排序。因此,像主键这样的自增列是完美的选项。否则,你可能需要使用 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 数据库管理工具

实战演练 | 数据库中检索奇数或偶数行的简单方法相关推荐

  1. mysql数据库取奇数行数据_查询数据库中的奇数行和偶数行

    功能奇数次执行和偶数次执行时的结果不同的故障复盘 场景:将数据库查询到的数据,写入一个xls文件.完成后,多点几次,发现一个问题,偶数次生成的文件比较小,打开一看,里面只有一行,只有标题,没有内容.分 ...

  2. java杨辉三角奇数_杨辉三角中的奇数与偶数

    4-38 数学教 学 2009年第 4期 杨辉三角中的奇数与偶数 430061湖北省武昌实验中学 王先东 1.问题的提出 第 0行 杨辉三角是大家非常熟悉的,如果我们把杨 辉三角中的奇数换成1,偶数换 ...

  3. 加密数据的检索_透明地持久保存并从数据库中检索加密的数据

    加密数据的检索 自从我在这里发表上一个帖子以来已经有两个多月了,但是今年六月和七月非常忙碌而密集. 首先, Confitura的组织(欧洲最大的Java开发人员免费会议)参加了我所有的免费晚会,然后在 ...

  4. 透明地持久保存并从数据库中检索加密的数据

    自从我在这里发表上一个帖子以来已经有两个多月了,但是今年六月和七月非常忙碌而密集. 首先, Confitura的组织(欧洲最大的Java开发人员免费会议)参加了我所有的免费晚会,然后在相当紧张的住院期 ...

  5. 是否可以在SQLite数据库中一次插入多行?

    在MySQL中,您可以插入多行,如下所示: INSERT INTO 'tablename' ('column1', 'column2') VALUES('data1', 'data2'),('data ...

  6. android 图片存储读取数据库中,如何在android中存储(位图图像​​)并从sqlite数据库中检索图像?...

    设置数据库public class DatabaseHelper extends SQLiteOpenHelper { // Database Version private static final ...

  7. numpy序列预处理dna序列_【陪你学生信】七、在数据库中检索相似的序列

    一.相似度Similarity 序列的分析离不开相似度这个指标,相似度比较高的序列往往具有相似的结构.执行相似的功能.所以用未知序列blast得到的结果可以对未知序列进行推测. 当两个序列非常相似时, ...

  8. 各个数据库中,查询前n条记录的方法

    一.各个数据库中,查询前n条记录的方法 1.SQL查询前10条的方法为: 1.select top X * from table_name 查询前X条记录,可以改成需要的数字,比如前10条. 2.se ...

  9. javascript判断日期奇偶_JavaScript判断奇数和偶数的两种方法

    JavaScript是前端开发中必不可少的一部分,那你知道如何用JS判断一个数是奇数还偶数吗?这篇文章就给大家分享JS判断奇数和偶数的两种方法,有一定的参考价值,感兴趣的朋友可以参考一下. 方法一:用 ...

最新文章

  1. 如何进行网站的安全测试
  2. Thinking in java 笔记一
  3. 用Unity3D实现智能巡逻兵游戏
  4. oracle 换行符_python实现自动化报表(Oracle/plsql/Excel/多线程)
  5. 在RHEL6.2上,将一个分区开机自动挂载
  6. Java笔记-String.format的使用(可用于格式化字符串)
  7. CetnOS 6.7安装Hive 1.2.1
  8. 乘风破浪:LeetCode真题_027_Remove Element
  9. 3月22 关于CSS
  10. 基于FPGA的视频处理
  11. mysql联合主键及用法
  12. Maya菜单中英文对照表(一)
  13. tp5实现短信注册,调用第三方接口,电话通知,和短信通知都可以。
  14. VMware要求更新,系统更新后VMware打不开,要求更新
  15. Android x86是什么?,安卓X86是什么?和手机上的安卓系统有什么区别?
  16. Win10升级后执行系统封装(Sysprep)报错
  17. 2019风中劲草 思想政治理论冲刺背诵核心考点【超清】
  18. linux无法打开某些网页,Linux无法打开网页
  19. mysql智能停车场,jsp357智能停车场管理系统 双数据库版 mysql
  20. Google的脚本错误

热门文章

  1. 【深入理解TcaplusDB技术】入门Tcaplus SQL Driver
  2. mysql handlers_MySQL handler相关状态参数解释
  3. 线性规划——对偶问题、强弱对偶定理、KKT条件
  4. 【读书笔记】减法——完美无缺,不是增无可增,而是减无可减
  5. 软件测试简历自我评价范文,测试工程师求职简历自我评价范文
  6. <JVM下篇:性能监控与调优篇>03-JVM监控及诊断工具-GUI篇
  7. what this book can do for you ?
  8. Vue使用keep-alive,调用 $destory() ,页面不再被缓存的解决方法
  9. 如何使用LINQ链接数据库并操作数据库
  10. 以卖单车为例形象理解23种设计模式