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

如何编写SQL实现主表每行匹配次表结果并拼接输出?

实现方案与可行性说明

完全可以实现需求,以下是具体的SQL查询方案:

思路

先分别筛选主表、次表中符合W=100 AND H=500 AND D=300条件的记录,给主表的每条符合记录分配唯一分组ID,再将次表的符合记录与主表的每个分组ID做关联,最后通过分组ID+排序标记来控制输出顺序,确保主表每条记录后紧跟所有次表符合记录。

具体SQL代码

WITH filtered_primary AS (
    SELECT 
        Name, W, H, D,
        ROW_NUMBER() OVER (ORDER BY Name) AS group_id,
        1 AS sort_order
    FROM primary_table
    WHERE W = 100 AND H = 500 AND D = 300
),
filtered_secondary AS (
    SELECT 
        s.Name, s.W, s.H, s.D,
        p.group_id,
        2 AS sort_order
    FROM secondary_table s
    CROSS JOIN filtered_primary p
    WHERE s.W = 100 AND s.H = 500 AND s.D = 300
)
SELECT Name, W, H, D
FROM (
    SELECT Name, W, H, D, group_id, sort_order FROM filtered_primary
    UNION ALL
    SELECT Name, W, H, D, group_id, sort_order FROM filtered_secondary
) combined
ORDER BY group_id, sort_order;

代码解释

  1. filtered_primary CTE:筛选主表符合条件的记录,用ROW_NUMBER()生成唯一的group_id用来分组,sort_order=1确保主表记录在同组内排在最前面。
  2. filtered_secondary CTE:筛选次表符合条件的记录,通过CROSS JOIN关联主表的筛选结果,让次表的每条符合记录对应主表的每个分组ID,sort_order=2标记为次表记录,排在主表之后。
  3. 合并与排序:将两个CTE的结果合并,按group_id分组排序,同组内按sort_order排序,最终得到主表每条符合记录后紧跟所有次表符合记录的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 09:35:16