基于Select - ISSUES更新的SQL Server查询

时间:2013-04-02 20:54:01

标签: sql sql-server sql-update

我正在编写一个查询,它基本上将EstimatedDepartureDate的所有日期字段更新为指定日期。我正在使用我创建的视图来提取帐户列表以更新并针对包含所有员工记录的tnpEmployee表运行此帐户。但是,在运行此查询时,它始终具有类似于:

的输出
  

(1行受影响)

     

(55行(s)受影响)

同样,它首先影响一行,然后影响其余行。当我在该视图中运行SQL以创建以查看感兴趣的人员列表时,它会在每次运行查询时显示一条记录,并且在该底部显示一个较少的数字(55行受影响) ),所以下一次运行会显示54。

这是我正在运行的查询:

UPDATE tnpEmployee 
SET tnpEmployee.EstimatedDepartureDate='2014-04-01 13:37:43.000'
FROM tnpEmployee
INNER JOIN vnpGetActiveAccountsAgainstToBeDisabled
ON tnpEmployee.EmployeeID=vnpGetActiveAccountsAgainstToBeDisabled.EmployeeID
WHERE tnpEmployee.Email=vnpGetActiveAccountsAgainstToBeDisabled.Email

任何帮助都会非常感激,它会杀了我!所有需要发生的是行获取日期字段集,就是它,它们应该全部填充在我创建的非常基本的视图中,而不是每次运行时少一个。此外,当我运行该视图并减少一个记录时,所有记录都已使用新日期更新..

1 个答案:

答案 0 :(得分:0)

您可以尝试重写SQL语句:

UPDATE tnpEmployee 
SET tnpEmployee.EstimatedDepartureDate='2014-04-01 13:37:43.000'
WHERE tnpEmployee.EmployeeID IN (
SELECT vnpGetActiveAccountsAgainstToBeDisabled.EmployeeID
FROM vnpGetActiveAccountsAgainstToBeDisabled
WHERE tnpEmployee.Email=vnpGetActiveAccountsAgainstToBeDisabled.Email
);

正如专家已经建议的那样,您的结果看起来像您的查询会调用触发器。