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

SQL表连接:如何将两行关联数据合并为一行

问题解答

不能实现。要把卧室和浴室的颜色数据合并到一行,必须依赖bedroom_color_id和bathroom_color_id这两个字段作为关联table_two的逻辑依据——这两个字段是table_one与table_two之间,对应卧室、浴室颜色的唯一关联键。

为什么当前查询返回两行?

你当前的查询用t1.id = t2.id关联,能返回对应卧室、浴室颜色的两行,只是数据巧合:table_two里恰好有两条记录的Id和table_one的Id匹配,且这两条记录分别对应卧室和浴室的颜色。但这种关联逻辑完全不严谨,一旦table_two新增其他与t1.id匹配的记录,查询结果会彻底混乱。

正确的合并写法(必须用到color_id字段)

要稳定合并成一行,需要两次关联table_two,分别通过bedroom_color_id和bathroom_color_id获取对应颜色数据:

SELECT 
    t1.Id,
    -- 卧室颜色相关字段
    bedroom_color.red_value AS bedroom_red,
    bedroom_color.blue_value AS bedroom_blue,
    bedroom_color.yellow_value AS bedroom_yellow,
    -- 浴室颜色相关字段
    bathroom_color.red_value AS bathroom_red,
    bathroom_color.blue_value AS bathroom_blue,
    bathroom_color.yellow_value AS bathroom_yellow
FROM table_one AS t1
LEFT JOIN table_two AS bedroom_color
    ON t1.bedroom_color_id = bedroom_color.color_id
LEFT JOIN table_two AS bathroom_color
    ON t1.bathroom_color_id = bathroom_color.color_id

为什么绕不开这两个字段?

table_two存储的是颜色的RGB值,每条记录对应一种颜色。要区分“卧室颜色”和“浴室颜色”,必须通过table_one里的bedroom_color_id和bathroom_color_id来定位table_two中对应的颜色记录——没有这两个字段,数据库无法判断哪条颜色记录对应卧室、哪条对应浴室,自然没法稳定合并成一行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 13:24:55