lotus

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

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理


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

在进行查询的时候可能需要同时取出几种类型的数据。一般的做法是将改订单的各个种类数据都取出来,在后台使用代码拼接,但是其实还有一种方法。使用聚合和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 2022-07-15 11:34  白露~  阅读(1522)  评论(0编辑  收藏  举报