You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL多行数据合并为单行的查询语句实现问询

如何在MySQL中将多行查询结果合并为单行(按baseWord聚合)

嘿,这个需求很常见,用MySQL的条件聚合就能轻松搞定!你想要把同一个baseWord对应的不同case值拆分到单独的列里,把多行数据合并成单行展示,下面是具体的实现方法:

核心思路

利用聚合函数(比如MAX())配合CASE WHEN条件判断,针对不同的case类型提取对应的word值,再通过GROUP BY按baseWord分组,最终将多行合并为单行。

针对单个baseWord的查询(以'run'为例)

如果你只需要查询baseWord = 'run'的结果,执行以下SQL语句:

SELECT 
    baseWord,
    MAX(CASE WHEN `case` = 'past' THEN word END) AS word,
    'past' AS `case`,
    MAX(CASE WHEN `case` = 'plural' THEN word END) AS plural
FROM myTable
WHERE baseWord = 'run'
GROUP BY baseWord;

语句解释

  • CASE WHEN \case` = 'past' THEN word END:筛选出case为past的word值,其他情况返回NULL;用MAX()聚合是因为每个baseWord对应唯一的past值,聚合后会自动忽略NULL,得到我们需要的ran`。
  • 同理,plural列通过相同逻辑提取case为plural的word值runners。
  • GROUP BY baseWord:确保将同一个baseWord的所有行合并为一行。

执行后会得到你期望的结果:

baseWordwordcaseplural
runranpastrunners

批量处理所有baseWord的通用查询

如果你想一次性处理表中所有baseWord,去掉WHERE条件即可,同时可以优化列名让结果更清晰:

SELECT 
    baseWord,
    MAX(CASE WHEN `case` = 'past' THEN word END) AS past_word,
    MAX(CASE WHEN `case` = 'plural' THEN word END) AS plural_word
FROM myTable
GROUP BY baseWord;

这个语句会返回所有单词的过去式和复数形式的单行结果:

baseWordpast_wordplural_word
runranrunners
talktalkedtalkers

内容的提问来源于stack exchange,提问作者Mattytripps

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 09:12:44