随着从 postgresql 迁移到达梦数据库的开发工作越来越深入,我们又陆陆续续地遇到了一些棘手的问题。下面我们继续逐个讲解其中比较有意思的方面。

PG 里的 distinct 的神奇之处以及达梦当中类似的变通实现

在使用 pg(postgresql)的时候,我们业务代码中有类似以下这样的用法(为了叙述简便,简化之):

select distinct on (field_1) *
from table_1

咋一看,这个语句有点神奇。其实这个 distinct on (xxx) ,表示的是依据哪些字段来作为 distinct 的筛选。为什么说它神奇呢?这是因为PG 的引擎太灵活了,因此它可以允许查询出来的列和 作为 distinct 的列 独立开来。这样的话,假设table_1 里面有 field_1 值为 1,1,2,2,3,3 的,那么按上述语句,查询结果只会出现 field_1 分别为1,2,3 的3条记录,至于是哪3条,如果没有特别的筛选,那基本上就是按DB查询时遇到的记录的顺序来。

但是,到了达梦数据库这里,就没有直接对应的 distinct 的语法了。在达梦数据库当中,distinct 的列,和查询的列必须是一体统一的。所以在达梦的语法体系里,要想根据 field_1 的值来做 distinct ,而又想同时查询出其他字段的值,就很麻烦。

幸运的是,在同事的努力之下,发现在达梦数据库中一个变通的方法,如下:

select * from (select row_number()  over (partition by field_1 order by field_1 asc) as row_number_id,* from table_1 )
where row_number_id = 1;

通过引入 row_number() 并根据 field_1 生成分组的行号,再通过外面多一层查询去筛选这个分组行号为 1,总算实现了与 PG 一样的效果。

OK,后续遇到什么迁移过程中的疑难杂症,我将在这篇文章中继续补充。

感谢您的阅读,希望上述分享对您有用!

达梦 dameng 数据库之升级打怪数据库兼容问题记录(2)- ditinct 相关问题相关推荐

  1. 达梦数据查询编码_从数据库到全栈数据解决方案,达梦不走捷径

    "世界上最快的捷径,就是不走捷径."--这句名言在达梦公司二十年的发展历程中体现的淋漓尽致. 四十年前,达梦公司董事长冯裕才还是华中科技大学一名教师,在一次偶然的学习机会中,目睹了 ...

  2. 达梦dm8可视化工具_活字格兼容达梦DM8,低代码支持数据库国产化

    DM8是达梦公司在总结DM系列产品研发与应用经验的基础上,坚持开放创新.简洁实用的理念,历经五年匠心打磨,推出的新一代自研数据库.DM8和同类自主知识产权数据库一起,正在引领数据库国产化的大趋势. ( ...

  3. 达梦数据查询编码_查询数据库的编码方式

    在Mysql中 (1)查看Mysql数据库编码 show variables like 'character_set_database' 或者 show create database 数据库名称 ( ...

  4. 【与达梦同行】数据库升级实战教程

    1 背景 众所周知,IT行业发展日新月异.IT技术革新也是以迅猛著称. 达梦作为最优秀数据库厂商之一在数据库的研发上也是不遗余力,根据市场,客户,前沿技术稳定的对达梦数据库进行迭代. 达梦的数据库新版 ...

  5. 国产数据库:达梦数据库(达梦数据库管理系统)的快速安装(内含安装版:达梦数据库)

    一.简单介绍(达梦数据库管理系统) 名称:达梦数据库管理系统 [百度百科] 简称:达梦数据库(英文简称:DM) 所属:武汉达梦数据库有限公司[企查查] 官网:www.dameng.com(2020年9 ...

  6. 【达梦数据库】DM 集群简介

    文章目录 前言 一.数据守护 (Data Watch) 1.1 概念介绍 1.2 实现原理 1.3 组成构件 1.4 配置文件 1.5 系统特性 1.6 术语定义 1.7 解决方案 二.实时主备集群 ...

  7. 立足国产自主可控技术 达梦DM8数据库新品化繁为简

    戳蓝字"CSDN云计算"关注我们哦! 面对技术日新月异的发展,如今俨然已经演变成为数据发展引来的潮流,而数据库的建立对企业的发展有着举足轻重的作用,对数据库的有效开发和管理是企业正 ...

  8. 达梦DM数据库—线上培训学习简记

    达梦DM数据库-线上培训学习简记 (20200812) 有幸参加国内领先的达梦数据库(自主研发)的线上学习,达梦的老师都非常的NICE, 遇到问题会非常耐心的线上解答.现将这次的学习中的一些知识点做了 ...

  9. 达梦数据库(DM8)基本使用

    DM8软件的安装 安装环境配置 创建安装用户和组 安装用户和组:dmdba,dinstall,-d用户登录的起始目录 -m自动创建用户登入的目录 -s用户登录后使用的shell. [root@loca ...

最新文章

  1. 冯诺依曼计算机程序及其执行,第4章冯.诺依曼计算机:机器级程序与其执行练习题答案解析...
  2. C#程序设计--入门到精通 学习记录(一) C# 与 .net平台
  3. 走近NAP功能 全面了解Vista系统安全机制
  4. 通俗讲解:图像傅里叶变换
  5. 设计模式之模版方法模式的钩子方法
  6. jaxb xsd生成xml_使用JAXB从XSD生成XML
  7. HTML5唐诗三百首,《唐诗三百首》中王维5首五言绝句,代表了盛唐绝句的最高成就!...
  8. python中的update是什么意思_python 字典中的Update()函数
  9. Maven私服(二) - Nexus的安装
  10. linux select函数用法
  11. Rails + Bootstrap个人博客搭建的完整过程(4)
  12. 毕设过程小记—同步带传动选型计算+张紧机构
  13. artDialog | 经典的网页对话框组件
  14. java 冒泡_Java中的冒泡排序
  15. 凯撒密码加密算法python_密码学初探:隐藏信息的艺术——区块链技术引卷之十一...
  16. 科学万能科计算机科学万能计算机,万能科学计算器CalcES v5.0.5脱壳专业会员版...
  17. 拼手气红包算法_线段切割法
  18. 论文摘要部分如何撰写
  19. 【活动】DevOps直播技术架构养成记
  20. 一次关于前端的内存泄漏

热门文章

  1. 一、如何快速掌握数据库
  2. shell-定时备份数据库发送至邮箱
  3. 生活娱乐 如何给女朋友写情书
  4. 214情人节,使用微信小程序【信鸽相知】写情书吧
  5. 使用 tree 命令生成目录
  6. 安卓开发设置系统文件夹下图片为控件背景
  7. [NOI2008] 假面舞会
  8. Mac上如何彻底卸载Vs code
  9. proc oracle12c,Oracle12cRAC安装遭遇CLSRSC-507: The root script cannot proceed on this node
  10. 字节跳动在Spark SQL上的核心优化实践