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

如何合并不同列数据表并为无关联的CompanyC匹配全量Table2数据

嘿,我看你要的是把Table1里的CompanyC和Table2的所有记录强制匹配,同时保留两张表原本能关联上的记录对吧?之前的full outer join思路不对,因为它只会保留两边没匹配上的行并填充null,而不是主动生成CompanyC和Table2每条记录的组合。

解决方案

给你个直接能解决问题的SQL:

-- 先获取两张表中company和jobs都匹配的正常关联记录
SELECT t1.company, t1.jobs, t2.emp_name
FROM table1 t1
INNER JOIN table2 t2 
  ON t1.company = t2.company 
  AND t1.jobs = t2.jobs

-- 再生成CompanyC与Table2所有记录的全量组合
UNION ALL

SELECT t1.company, t1.jobs, t2.emp_name
FROM table1 t1
CROSS JOIN table2 t2
WHERE t1.company = 'CompanyC'

执行结果验证

运行后会得到你期望的结果:

jobsemp_name
ITJohn
BusinessMike
EngineerJohn
EngineerMike

逻辑说明

  • 第一部分用INNER JOIN抓取两张表中company和jobs均匹配的行,对应期望结果里原本能关联上的记录;
  • 第二部分用CROSS JOIN实现Table1中CompanyC记录与Table2所有记录的笛卡尔积,再通过WHERE限定仅保留CompanyC的行,生成你需要的强制匹配组合;
  • 用UNION ALL合并两部分结果,因为这两部分无重复数据,UNION ALL比UNION的执行效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:44:01