如何用MySQL将横向数据转换为纵向数据?
MySQL横向列转纵向行查询方案
假设你的表名为product_prices,可以通过UNION ALL将多列价格数据合并为纵向的结果集,具体SQL语句如下:
SELECT prod, price1 AS price FROM product_prices UNION ALL SELECT prod, price2 AS price FROM product_prices UNION ALL SELECT prod, price3 AS price FROM product_prices ORDER BY prod, price;
关键说明:
- 用
UNION ALL而非UNION:前者不会对结果去重,性能更优,完全匹配当前需求(不需要剔除重复值)。 - 每个子查询将对应价格列重命名为
price,确保合并后列名统一。 - 末尾的
ORDER BY可以让结果按prod分组、price排序,和你期望的输出顺序一致。
如果后续新增类似价格列(如price4、price5),只需继续追加UNION ALL SELECT prod, priceN AS price FROM product_prices即可。
内容的提问来源于stack exchange,提问作者eniac05
相关产品推荐
相关产品推荐

