达梦 dameng 数据库之升级打怪数据库兼容问题记录(2)- ditinct 相关问题
随着从 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 相关问题相关推荐
- 达梦数据查询编码_从数据库到全栈数据解决方案,达梦不走捷径
"世界上最快的捷径,就是不走捷径."--这句名言在达梦公司二十年的发展历程中体现的淋漓尽致. 四十年前,达梦公司董事长冯裕才还是华中科技大学一名教师,在一次偶然的学习机会中,目睹了 ...
- 达梦dm8可视化工具_活字格兼容达梦DM8,低代码支持数据库国产化
DM8是达梦公司在总结DM系列产品研发与应用经验的基础上,坚持开放创新.简洁实用的理念,历经五年匠心打磨,推出的新一代自研数据库.DM8和同类自主知识产权数据库一起,正在引领数据库国产化的大趋势. ( ...
- 达梦数据查询编码_查询数据库的编码方式
在Mysql中 (1)查看Mysql数据库编码 show variables like 'character_set_database' 或者 show create database 数据库名称 ( ...
- 【与达梦同行】数据库升级实战教程
1 背景 众所周知,IT行业发展日新月异.IT技术革新也是以迅猛著称. 达梦作为最优秀数据库厂商之一在数据库的研发上也是不遗余力,根据市场,客户,前沿技术稳定的对达梦数据库进行迭代. 达梦的数据库新版 ...
- 国产数据库:达梦数据库(达梦数据库管理系统)的快速安装(内含安装版:达梦数据库)
一.简单介绍(达梦数据库管理系统) 名称:达梦数据库管理系统 [百度百科] 简称:达梦数据库(英文简称:DM) 所属:武汉达梦数据库有限公司[企查查] 官网:www.dameng.com(2020年9 ...
- 【达梦数据库】DM 集群简介
文章目录 前言 一.数据守护 (Data Watch) 1.1 概念介绍 1.2 实现原理 1.3 组成构件 1.4 配置文件 1.5 系统特性 1.6 术语定义 1.7 解决方案 二.实时主备集群 ...
- 立足国产自主可控技术 达梦DM8数据库新品化繁为简
戳蓝字"CSDN云计算"关注我们哦! 面对技术日新月异的发展,如今俨然已经演变成为数据发展引来的潮流,而数据库的建立对企业的发展有着举足轻重的作用,对数据库的有效开发和管理是企业正 ...
- 达梦DM数据库—线上培训学习简记
达梦DM数据库-线上培训学习简记 (20200812) 有幸参加国内领先的达梦数据库(自主研发)的线上学习,达梦的老师都非常的NICE, 遇到问题会非常耐心的线上解答.现将这次的学习中的一些知识点做了 ...
- 达梦数据库(DM8)基本使用
DM8软件的安装 安装环境配置 创建安装用户和组 安装用户和组:dmdba,dinstall,-d用户登录的起始目录 -m自动创建用户登入的目录 -s用户登录后使用的shell. [root@loca ...
最新文章
- 冯诺依曼计算机程序及其执行,第4章冯.诺依曼计算机:机器级程序与其执行练习题答案解析...
- C#程序设计--入门到精通 学习记录(一) C# 与 .net平台
- 走近NAP功能 全面了解Vista系统安全机制
- 通俗讲解:图像傅里叶变换
- 设计模式之模版方法模式的钩子方法
- jaxb xsd生成xml_使用JAXB从XSD生成XML
- HTML5唐诗三百首,《唐诗三百首》中王维5首五言绝句,代表了盛唐绝句的最高成就!...
- python中的update是什么意思_python 字典中的Update()函数
- Maven私服(二) - Nexus的安装
- linux select函数用法
- Rails + Bootstrap个人博客搭建的完整过程(4)
- 毕设过程小记—同步带传动选型计算+张紧机构
- artDialog | 经典的网页对话框组件
- java 冒泡_Java中的冒泡排序
- 凯撒密码加密算法python_密码学初探:隐藏信息的艺术——区块链技术引卷之十一...
- 科学万能科计算机科学万能计算机,万能科学计算器CalcES v5.0.5脱壳专业会员版...
- 拼手气红包算法_线段切割法
- 论文摘要部分如何撰写
- 【活动】DevOps直播技术架构养成记
- 一次关于前端的内存泄漏