检查为啥记录在 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 中返回两次的主要内容,如果未能解决你的问题,请参考以下文章

为啥这个记录计数返回 1?

为啥 alloca 两次返回相同的地址?

为啥添加单个文档时,Firestore 侦听器会返回 .add 两次?

为啥我的 laravel 集合返回 500 错误,即使不是在我使用 dd() 检查结果时?

嗯,为啥用'2'或'2'查找返回相同的记录?

限制从 Oracle 中的 SQL 查询返回的记录