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

基于CAT和GROUP匹配将Table1数据导入Table2的SQL需求

解决方案:生成同组内CODE的交叉配对记录

这是一个典型的同组内自关联生成配对的需求,我来给你提供适用于大多数关系型数据库的SQL实现方案:

核心思路

我们需要先筛选出[CAT]+[GROUP]组合下条目数大于1的组,然后将这些组内的记录与自身进行关联,排除CODE相同的情况,就能得到每个CODE对应的其他组内CODE,最后将结果插入到Table2中。

通用SQL实现(支持CTE的数据库,如SQL Server、PostgreSQL、MySQL 8.0+)

WITH ValidGroups AS (
    SELECT [CAT], [GROUP]
    FROM Table1
    GROUP BY [CAT], [GROUP]
    HAVING COUNT(*) > 1
)
INSERT INTO Table2 ([CODE], [ALTERNATECODE])
SELECT t1.[CODE], t2.[CODE] AS [ALTERNATECODE]
FROM Table1 t1
JOIN ValidGroups vg 
  ON t1.[CAT] = vg.[CAT] AND t1.[GROUP] = vg.[GROUP]
JOIN Table1 t2 
  ON t2.[CAT] = vg.[CAT] AND t2.[GROUP] = vg.[GROUP]
WHERE t1.[CODE] != t2.[CODE];

兼容旧版本数据库的实现(子查询替代CTE)

如果你的数据库不支持CTE(比如MySQL 5.x),可以用子查询改写:

INSERT INTO Table2 ([CODE], [ALTERNATECODE])
SELECT t1.[CODE], t2.[CODE] AS [ALTERNATECODE]
FROM Table1 t1
JOIN (
    SELECT [CAT], [GROUP]
    FROM Table1
    GROUP BY [CAT], [GROUP]
    HAVING COUNT(*) > 1
) vg 
  ON t1.[CAT] = vg.[CAT] AND t1.[GROUP] = vg.[GROUP]
JOIN Table1 t2 
  ON t2.[CAT] = vg.[CAT] AND t2.[GROUP] = vg.[GROUP]
WHERE t1.[CODE] != t2.[CODE];

代码说明

  1. ValidGroups:这个CTE(或子查询)先筛选出所有符合条件的组——也就是[CAT]+[GROUP]组合下条目数大于1的组,避免处理不需要生成记录的单条目组。
  2. 自连接Table1:将t1和t2都关联到有效组,确保只在同一组内进行配对,同时通过WHERE t1.[CODE] != t2.[CODE]排除CODE自身配对的情况。
  3. 插入结果:将配对后的CODE和ALTERNATECODE插入到Table2中,完全符合你给出的示例结果。

验证规则

  • 组内有2个条目时,生成2*(2-1)=2条记录,和示例一致;
  • 组内有3个条目时,生成3*(3-1)=6条记录,和示例一致;
  • 组内有5个条目时,生成5*(5-1)=20条记录,和示例中的对应部分完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:04:32