SQL Server在条件相同的SELECT和UPDATE查询中的行数不匹配

SQL Server在条件相同的SELECT和UPDATE查询中的行数不匹配,sql,sql-server,sql-server-2012,sql-server-2016,sql-server-2017,Sql,Sql Server,Sql Server 2012,Sql Server 2016,Sql Server 2017,我正在尝试匹配更新并选择具有相同条件的查询计数。但行数的变化很大 更新查询: UPDATE MKP set MKP.Quantity = MKP.Quantity + LQD.Quantity, ModifiedDate = GETDATE() FROM IM_MarketPlace MKP INNER JOIN IM_ChannelListings CL ON MKP.ListingID = CL.ListingID

我正在尝试匹配更新并选择具有相同条件的查询计数。但行数的变化很大

更新查询:

 UPDATE  MKP set MKP.Quantity =  MKP.Quantity + LQD.Quantity, ModifiedDate = GETDATE()
         FROM IM_MarketPlace MKP 
              INNER JOIN IM_ChannelListings CL ON MKP.ListingID = CL.ListingID 
              INNER JOIN @ListingQuantityData LQD ON LQD.ChanelListingID = RTRIM(LTRIM((CL.ChannelListingID)))  and LQD.SalesChannelID = CL.ChannelID
              Left outer join IM_ListingVariations LV on LV.ListingCode = RTRIM(LTRIM((LQD.VariationSKU))) and  MKP.ListingVariationID = LV.ID and CL.ListingID=LV.ListingID
         WHERE MKP.IsActive =1 and MKP.IsDeleted=0 and CL.IsActive =1 and CL.IsDeleted=0 
               AND (LQD.VariationSKU is null OR (LQD.VariationSKU = LV.ListingCode and lv.ID = MKP.ListingVariationID))
选择查询

select count(mkp.ListingID) FROM IM_MarketPlace MKP 
              INNER JOIN IM_ChannelListings CL ON MKP.ListingID = CL.ListingID 
              INNER JOIN @ListingQuantityData LQD ON LQD.ChanelListingID = RTRIM(LTRIM((CL.ChannelListingID)))  and LQD.SalesChannelID = CL.ChannelID
              Left outer join IM_ListingVariations LV on LV.ListingCode = RTRIM(LTRIM((LQD.VariationSKU))) and  MKP.ListingVariationID = LV.ID and CL.ListingID=LV.ListingID
         WHERE MKP.IsActive =1 and MKP.IsDeleted=0 and CL.IsActive =1 and CL.IsDeleted=0 
               AND (LQD.VariationSKU is null OR (LQD.VariationSKU = LV.ListingCode and lv.ID = MKP.ListingVariationID))
请帮我解决这个问题


另外,请告诉我@rowcount将如何用于更新查询。

如果联接中涉及的至少两个表之间存在一对多关系,则会发生这种情况

SELECT
将对所有行进行计数,包括被联接相乘的行。
UPDATE
将只计算受
UPDATE
影响的
IM\u MarketPlace
中的唯一行


如果存在一对多关系,则无法确定连接到
IM\u MarketPlace
中特定行的“多”行中的哪一行被用作该行更新的源。

感谢您的回复。我尝试在select查询中获取唯一的行,它提供的行数少于update查询所做的行数。因此,您的尝试可能不正确。但你没有提供任何细节