如何用SQL的SELECT命令提取并分列展示德英双语命令文本
实现多语言文本分列的SQL方案
你可以通过两种常用方法实现将德语、英语文本拆分到独立列的需求:
方法1:自连接(适合确保每个code都有德英双语的场景)
通过将表自身按code关联,分别筛选德语和英语的行,直接拼接成目标结构:
SELECT de.code, de.lang AS de_lang, de.text AS `German text`, en.lang AS en_lang, en.text AS `English text` FROM translations de INNER JOIN translations en ON de.code = en.code AND de.lang = 'de' AND en.lang = 'en' ORDER BY de.code;
说明:
- 用
INNER JOIN只会返回同时存在德英双语的code记录 - 给两个
lang列分别取别名de_lang和en_lang,避免列名重复冲突
方法2:条件聚合(兼容部分code缺少某语言的场景)
使用CASE语句结合聚合函数,按code分组后提取对应语言的文本,适合需要保留仅单语言记录的场景:
SELECT code, 'de' AS de_lang, MAX(CASE WHEN lang = 'de' THEN text END) AS `German text`, 'en' AS en_lang, MAX(CASE WHEN lang = 'en' THEN text END) AS `English text` FROM translations WHERE lang IN ('de', 'en') GROUP BY code ORDER BY code;
说明:
- 用
MAX()(或MIN(),因单语言对应唯一值)提取分组后的目标文本 - 若某个
code缺少德语/英语,对应列会显示NULL WHERE子句先过滤掉无关语言,提升查询效率
内容的提问来源于stack exchange,提问作者N_user
相关产品推荐
相关产品推荐

