情景:
在某些系统设计中,多个含义的数据可能不是用多个字段去表示的,而是通过一个类型字段和值去存储,
例如:某个系统中有多种金额类型,那么可能是通过三个字段进行存储:订单号、金额种类、金额。
在进行查询的时候可能需要同时取出几种类型的数据。一般的做法是将改订单的各个种类数据都取出来,在后台使用代码拼接,但是其实还有一种方法。使用聚合和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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享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篇