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

一对多关联表:将Attributes表值转为结果列的SQL查询实现

解决方案

可以使用条件聚合实现行转列,将Attributes表中的field值转为结果集的列,以下是对应的SQL语句:

SELECT
    p.name,
    p.age,
    p.phone,
    MAX(CASE WHEN a.field = 'hair' THEN a.value END) AS hair,
    MAX(CASE WHEN a.field = 'eyes' THEN a.value END) AS eyes,
    MAX(CASE WHEN a.field = 'height' THEN a.value END) AS height
FROM
    Person p
LEFT JOIN
    Attributes a ON p.id = a.fk
GROUP BY
    p.id, p.name, p.age, p.phone;

关键细节说明:

  • LEFT JOIN:确保所有Person记录都被保留,即使没有对应属性数据,缺失字段自动填充NULL。
  • 条件聚合逻辑:CASE WHEN根据field匹配目标列,将对应的value填充进去;MAX()函数用于聚合分组,因为每个Person的同一个field只会有一条记录,聚合后不会改变值,同时保证每个Person仅返回一行结果。
  • GROUP BY规则:必须包含Person表中所有非聚合字段(id、name、age、phone),符合SQL的分组要求,避免出现分组错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 21:27:03