lotus

贵有恒何必三更眠五更起 最无益只怕一日曝十日寒

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  1846 随笔 :: 0 文章 :: 109 评论 :: 288万 阅读


情景:
在某些系统设计中,多个含义的数据可能不是用多个字段去表示的,而是通过一个类型字段和值去存储,
例如:某个系统中有多种金额类型,那么可能是通过三个字段进行存储:订单号、金额种类、金额。

在进行查询的时候可能需要同时取出几种类型的数据。一般的做法是将改订单的各个种类数据都取出来,在后台使用代码拼接,但是其实还有一种方法。使用聚合和case来实现。

参考方法:
数据表结构
现有一个翻译表 translate,有三个字段:key,language、translate,分别表示:键,语言、翻译结果。

需求
现在要同时查出某个键的繁体中文和英文,并显示在一行,可以通过下面的方法实现:

SQL语句
# 将 translate 列按照语种分为两列显示
SELECT
`key`,
GROUP_CONCAT((case when language = 'zh_HK' then translate ELSE null END)) as '繁体中文',
GROUP_CONCAT((case when language = 'en_US' then translate ELSE null END)) AS '英文'
FROM `translate`
GROUP BY `key`

实现效果

 

 

 

 

 

 

 

注意:此方法未做大数据性能测试,生产环境请自行测试。

原文链接:https://blog.csdn.net/yueguangMaNong/article/details/122621165

posted on   白露~  阅读(1560)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2021-07-15 告别编码5分钟,命名2小时!史上最全的Java命名规范参考!
2021-07-15 史上最全常用正则表达式大全
2021-07-15 JAVA中不要用e.printStackTrace()
2021-07-15 JAVA中不要用e.printStackTrace()
2021-07-15 为什么尽量不用e.printStackTrace
2021-07-15 java返回集合为null还是空集合以及空集合的三种写法
2021-07-15 IntelliJ IDEA使用技巧——常用快捷键Mac篇
点击右上角即可分享
微信分享提示