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

MySQL如何将单行数据转换为两列?非重复问题求解

MySQL 查询结果格式转换方案示例

假设你遇到的是行转列这类常见的格式转换需求(这是MySQL里最常碰到的格式转换场景之一),我给你举个具体的例子来演示怎么实现:

原查询结果(比如用户订单按月份的明细)

user_idmonthamount
1一月100
1二月200
2一月150

目标格式(把月份转成列,按用户汇总)

user_id一月二月
1100200
21500

实现SQL语句

你可以用CASE WHEN结合聚合函数来实现:

SELECT
    user_id,
    SUM(CASE WHEN month = '一月' THEN amount ELSE 0 END) AS '一月',
    SUM(CASE WHEN month = '二月' THEN amount ELSE 0 END) AS '二月'
FROM
    your_table_name
GROUP BY
    user_id;

如果是列转行的反向需求,比如把多列转成多行,可以用UNION ALL来处理:

原查询结果

user_id一月二月
1100200
21500

目标格式

user_idmonthamount
1一月100
1二月200
2一月150
2二月0

实现SQL语句

SELECT user_id, '一月' AS month, 一月 AS amount FROM your_table_name
UNION ALL
SELECT user_id, '二月' AS month, 二月 AS amount FROM your_table_name
ORDER BY user_id, month;

要是你的需求是其他格式转换(比如拼接字符串、分组合并等),直接把你的原查询结果样例和目标格式样例贴出来,我再给你针对性的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:50:41