如何使用MySQL将单行数据转换为多行展示?附尝试SQL求指导
解决方案
看起来你需要把原表的一行多列数据转换成多行结构,用UNION ALL就能轻松实现这个需求。假设你的原表名为your_table(替换成实际表名即可),可以使用以下SQL语句:
SELECT 1 AS time, CONCAT('a | ', a) AS sessionCnt FROM your_table UNION ALL SELECT 2 AS time, CONCAT('b | ', b) AS sessionCnt FROM your_table UNION ALL SELECT 3 AS time, CONCAT('c | ', c) AS sessionCnt FROM your_table;
语句说明
- 我们通过三个独立的
SELECT语句分别处理原表的a、b、c列,每个语句生成一行结果; - 手动给
time字段赋值1、2、3,对应原表列的顺序; - 使用
CONCAT()函数将列名(如'a')和对应字段值(如a1)拼接成你需要的sessionCnt格式; - 最后用
UNION ALL将三个查询的结果合并为一个完整的结果集。
如果你的原表只有一行数据(就像示例里那样),执行后就能得到你想要的输出。如果原表有多行数据,这个语句会将每行的a、b、c列都拆成对应行,若只需处理特定行,可以在每个SELECT后添加WHERE条件过滤。
内容的提问来源于stack exchange,提问作者hwkang
相关产品推荐
相关产品推荐

