ITPub博客

首页 > 数据库 > 数据库开发技术 > 你以为你以为的就是你以为的吗

你以为你以为的就是你以为的吗

原创 数据库开发技术 作者:xuexiaogang 时间:2022-08-15 17:18:14 0 删除 编辑

上周有个事情,一个开发写的SQL,我有点接受不了。原始的是select   from t group by 后面跟了几十列。我当时也是震惊到了,为什么?他和我解释了一下,我当时真是想骂人。我来用几个表简单说明一下。我这里不用真实表和配置,我用个简单的表举例说明。比如说有一个表是流程表,大家可以看到有5个部门,每个部门做两件事,发工资和发奖金。(这种喜闻乐见的事情大家能快速理解)。如图1.当然真实的不是这么简单的列,他有几十列。表的行数也远超10行。


图1

需求是显示一个部门有几个配置的事件,多个事件用逗号连接起来。至于其他列也显示出来,但是不重要,主要是看这几个合并的。我初看这个想到说,这个SJ的字段就不应该存在这里,应该是一个部门表中直接存进去不就行了?如图2.开发说是的,但是接手就这样,之前也不知道谁想的这样做。


图2

有的时候不是什么人都能做设计,绝大多数人其实不应该去设计。就是实现就行了,设计的人一定要是懂数据库的,才知道怎么做最佳。

最后,废了一会儿脑细胞给写出来了。用到了第一次使用的listagg这个函数, 用了with as 的高级写法。其实吧,这种就上图2就全解决了,结果不专业的人留的坑,就这样。用这两个结合就避免了group by 几十列的尴尬境地。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/637517/viewspace-2910523/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 大实话
请登录后发表评论 登录
全部评论
OracleACE/PostgreSQLACE/阿里云MVP/腾讯云TVP/墨天轮 MVP/TiDBMVA/数盟会华东区长老/OpenTenBase社区委和技术委委员/架构师技术同盟名人堂成员上海地区理事会成员/if社区联合发起人/《DBA实战手记》作者/公众号:四海内皆兄弟

注册时间:2013-07-01

  • 博文量
    422
  • 访问量
    953518