检查为啥记录在 SQL 中返回两次

Posted

技术标签:

【中文标题】检查为啥记录在 SQL 中返回两次【英文标题】:Check why record is returned twice in SQL检查为什么记录在 SQL 中返回两次 【发布时间】:2016-07-20 06:38:12 【问题描述】:

我有一个 inward_doc_tracking_hdr 表,共有 79 条记录。

但是当我在存储过程中运行相同的东西时,我总共得到 80 条记录。

我检查了计数,发现一条记录计数为 2。

我想知道为什么记录被返回两次。

这里是查询:

Select  
    UserName, Document_Type, 
    count(Doc_No) docno,
    Doc_No, No_Of_Days_Doc_Pending, UserEmail,
    RA1_Email  -- User table  
from 
    MainTempTable
group by 
    UserName, Document_Type, Doc_No, No_Of_Days_Doc_Pending, 
    UserEmail, RA1_Email, Doc_No

更新

我下面的查询也返回 2 条记录。

Select   
             U.first_name + ' ' + U.last_name UserName,   
             TH.To_User,   
             TY.Type_desc Document_Type,   
             RA.mkey Reporting_To,   
             U.Email AS UserEmail,   
             RAU.Email AS RA1_Email,   
             RAU.first_name + ' ' + RAU.last_name RAName,   
             TH.Doc_No,   
             DATEDIFF(DAY,TH.LastAction_DateTime,GETDATE()) - DATEDIFF(WK,TH.LastAction_DateTime, GETDATE())   
                AS No_Of_Days_Doc_Pending  
            --INTO MainTempTable  
                from inward_doc_tracking_hdr TH   
                    inner join    
             user_mst U ON TH.To_User = U.mkey   
                inner join   
             emp_mst M ON M.mkey = U.employee_mkey   
                inner join   
            type_mst_a TY ON TY.master_mkey = TH.doc_type   
                inner join   
            emp_mst RA ON RA.mkey = M.Reporting_To   
                inner join    
                    user_mst RAU ON RAU.employee_mkey = RA.mkey   
            where   
                TH.Status_flag NOT IN (5,14) --- 5 for close, 14 for return   
                    and TH.To_user IS NOT NULL
                    and TH.To_User = 1019

【问题讨论】:

因为您已对该特定列使用了 Group By,请删除该列的 group by 并检查您是否获得了所有行。 如果你打算使用GROUP BY,你能详细说明你想做什么吗? @Manjuboyz:我删除了 group by,仍然得到 80 条记录。 删除 Count(),它将给出计数而不是行数。列名是什么?是“docno”吗? @TimBiegeleisen:我想检查计数为什么它得到 80 条记录,因为我只有 79 条记录 【参考方案1】:

这样做

Select  
UserName, Document_Type, 
 docno,
Doc_No, No_Of_Days_Doc_Pending, UserEmail,
RA1_Email  -- User table  
 from 
MainTempTable
 group by 
UserName, Document_Type,  No_Of_Days_Doc_Pending, 
UserEmail, RA1_Email, Doc_No

希望对你有帮助

Count()

【讨论】:

是的,现在 m 得到 79 条记录。但是,它给了我 80 条记录呢??任何特殊原因 现在你不会在那里看到'2',你必须使用 Count() 仅当:返回匹配指定条件的行数。 如果您想要特定列的值的数量,例如如果我想查找以我的名义购买的东西的数量,那么我们应该使用 Group By 这将允许我查看包含信息的项目数量. 哦,好的,知道了,兄弟。非常感谢您提供的信息 嗨,请查找更新后的问题。因为我不想使用 group by

以上是关于检查为啥记录在 SQL 中返回两次的主要内容,如果未能解决你的问题,请参考以下文章