删除后仍会显示记录

时间:2014-01-25 08:11:37

标签: sql sql-server tsql

我已经从HrEmployee表中删除了一个EmpID = 13的记录,当我使用select query来过滤empId = 13然后它没有显示结果时,这很好但是这个查询仍然显示empID = 13记录为什么会这样呢?

SELECT distinct 
dbo.HrEmployee.EmplID, 
dbo.HrEmployee.EmplName, 
dbo.AtdRecord.RecDate, 
dbo.AtdRecord.RecTime, 
dbo.HrDept.DeptName
FROM dbo.HrDept 
inner JOIN dbo.HrEmployee
ON dbo.HrDept.DeptID = dbo.HrEmployee.DeptID 
inner JOIN dbo.AtdRecord 
ON dbo.HrEmployee.EmplID = dbo.AtdRecord.EmplID
where HrEmployee.EmplID = 13

3 个答案:

答案 0 :(得分:1)

因为某些记录仍然存在,表dbo.AtdRecord中的EmpID = 13并且您使用的是INNER JOIN,请尝试以下操作:

SELECT distinct 
dbo.HrEmployee.EmplID, 
dbo.HrEmployee.EmplName, 
dbo.AtdRecord.RecDate, 
dbo.AtdRecord.RecTime, 
dbo.HrDept.DeptName
FROM dbo.HrDept 
left outer JOIN dbo.HrEmployee
ON dbo.HrDept.DeptID = dbo.HrEmployee.DeptID 
left outer JOIN dbo.AtdRecord 
ON dbo.HrEmployee.EmplID = dbo.AtdRecord.EmplID
where HrEmployee.EmplID = 13

答案 1 :(得分:0)

在不知道数据细节的情况下,我也会检查AtdRecord表中的EmpID = 13。另外,尝试将JOIN移除到HrDept,然后使用HrEmployee和AtdRecord表进行查询。基本上,简化查询并确定导致问题的原因。

答案 2 :(得分:0)

这将与您在其他帖子中的问题相关联, select statement working unexpectedly

您有两个相同表的副本,原始目标表和[master]数据库中的一个副本。

您可能正在对主数据库运行此查询,其中记录EmpId 13仍然存在但您已将其从原始表中删除