我已经从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
答案 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仍然存在但您已将其从原始表中删除