如何用单条SQL查询识别两Excel工作表差异的Order ID+Product ID组合
识别Excel两工作表中独有的(Order ID + Product ID)组合并保存结果
核心思路
不用拼接Order ID和Product ID列,直接以这两列作为关联条件,通过LEFT JOIN找出仅存在于表1的组合,RIGHT JOIN找出仅存在于表2的组合,再用UNION ALL合并结果,最后将结果存入新工作表。
完整SQL语句
假设表1对应Excel工作表Sheet1,表2对应Sheet2,执行以下语句会自动生成名为独有组合的新工作表:
SELECT * INTO [独有组合$] FROM ( -- 仅存在于表1的组合 SELECT '仅表1' AS 来源, t1.[Order ID], t1.[Product ID], t1.Qty FROM [Sheet1$] t1 LEFT JOIN [Sheet2$] t2 ON t1.[Order ID] = t2.[Order ID] AND t1.[Product ID] = t2.[Product ID] WHERE t2.[Order ID] IS NULL UNION ALL -- 仅存在于表2的组合 SELECT '仅表2' AS 来源, t2.[Order ID], t2.[Product ID], t2.Qty FROM [Sheet1$] t1 RIGHT JOIN [Sheet2$] t2 ON t1.[Order ID] = t2.[Order ID] AND t1.[Product ID] = t2.[Product ID] WHERE t1.[Order ID] IS NULL ) AS 独有数据集
关键说明
- 避免拼接列的问题:直接用两列关联比拼接更稳定,不会因为字段含特殊字符(如横线、空格)导致匹配错误。
- 保存结果的逻辑:
SELECT ... INTO [新表名$]是Excel Jet SQL语法,会直接在当前工作簿创建新工作表存储结果。 - 执行方式:在Excel中通过「数据」选项卡→「自其他来源」→「来自Microsoft Query」,选择当前工作簿后输入上述SQL即可执行。
内容的提问来源于stack exchange,提问作者Aman Jhagta
相关产品推荐
相关产品推荐

