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

MySQL:如何将同一entity_id的两行数据转为SKU和IMAGE单列展示?

解决MySQL中按entity_id分组并转置不同attribute_id值为列的问题

嘿,这个需求用条件聚合就能轻松搞定!核心思路是通过分组和条件判断,把同一entity_id下不同attribute_id对应的value提取到同一行的不同列中。

具体SQL实现

假设你的表名为attribute(如果不是的话,替换成你的实际表名),可以用下面的查询语句:

SELECT
    entity_id,
    MAX(CASE WHEN attribute_id = 85 THEN value END) AS SKU,
    MAX(CASE WHEN attribute_id = 257 THEN value END) AS IMAGE
FROM
    attribute
GROUP BY
    entity_id;

代码解释

  • CASE WHEN attribute_id = 85 THEN value END:只筛选出attribute_id为85的value,其他行对应位置返回NULL
  • MAX()函数:因为分组后同一entity_id下只有一条有效数据(其余是NULL),用MAX()可以忽略NULL,提取到有效的value值(如果每个entity_id对应每个attribute_id只有一条记录,用MIN()也能达到同样效果)
  • GROUP BY entity_id:确保每个entity_id的结果只出现在一行

测试效果

用你提供的测试数据:

attribute_identity_idvalue
852204740
257220image1.png

执行上述SQL后,会得到你期望的结果:

entity_idSKUIMAGE
2204740image1.png

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:07:54