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

如何从无外键关联的多表中查询无重复的合并数据

问题原因

你现在出现重复的核心原因是:UNION 只会对所有字段值完全一致的行去重,你UNION的两部分数据中,报价表条目对应的Quantity、Principal_Unit_Price等字段是真实业务值,而询价表对应条目这些字段都是0.00,属于不同的行,自然不会被去重,导致两个表共有的5条条目各出现两次。


解决方案

你不需要把整个询价条目表都合并进去,只需要补充报价表中不存在的询价条目即可,修改后的SQL如下:

DECLARE @EnquiryId int
SELECT @EnquiryId = Enquiry_Id FROM tbl_Estimation WHERE Estimation_Id = 1

-- 先取报价表的5条现有数据
SELECT
    Estimation_Id,
    Rfx_Item_No,
    Material_No,
    RTRIM(LTRIM(Description)) AS Description,
    Quantity,
    Principal_Unit_Price,
    Total,
    Li_Discount_Percent,
    Li_Discount_Amount,
    Li_Principal_Total,
    Li_Principal_Currency,
    Li_Petromar_Unit_Price,
    Li_Petromar_Total,
    Li_Exchange_Currency,
    Li_Exchange_Rate,
    Li_Petromar_Unit_Price_Fc,
    Li_Petromar_Total_Fc
FROM tbl_Estimation_Items
WHERE Estimation_Id = 1

UNION ALL -- 因为下面只会取不存在的条目,用UNION ALL效率更高

-- 只补充询价表中、报价表没有的条目
SELECT
    1 AS Estimation_Id,
    Rfx_Item_No,
    Material_No,
    RTRIM(LTRIM(Description)) AS Description,
    0.00 AS Quantity,
    0.00 AS Principal_Unit_Price,
    0.00 AS Total,
    0.00 AS Li_Discount_Percent,
    0.00 AS Li_Discount_Amount,
    0.00 AS Li_Principal_Total,
    0.00 AS Li_Principal_Currency,
    0.00 AS Li_Petromar_Unit_Price,
    0.00 AS Li_Petromar_Total,
    0.00 AS Li_Exchange_Currency,
    0.00 AS Li_Exchange_Rate,
    0.00 AS Li_Petromar_Unit_Price_Fc,
    0.00 AS Li_Petromar_Total_Fc
FROM tbl_Enquiry_Items ei
WHERE
    Enquiry_Id = @EnquiryId
    -- 排除已经在报价表中存在的行,这里以Rfx_Item_No为唯一标识,也可以换成Material_No或者两者组合
    AND NOT EXISTS (
        SELECT 1 FROM tbl_Estimation_Items eii
        WHERE eii.Estimation_Id = 1
        AND eii.Rfx_Item_No = ei.Rfx_Item_No
    )

优化说明

  • 原有SQL里对tbl_Estimation、tbl_Enquiry的左连接没有用到返回字段,也没有过滤逻辑,完全冗余,已经删除,性能更高
  • 用NOT EXISTS过滤后,UNION的第二部分只会返回需要的1条缺失条目,不会重复
  • 确定不会有重复行的情况下用UNION ALL替代UNION,不需要额外去重,查询效率更高
  • 如果行项目的唯一标识是Rfx_Item_No + Material_No的组合,修改NOT EXISTS里的关联条件即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:36:03