2014-10-22 17 views
0

试图更新多个记录。在sql中更新多个记录 - 语法

tbl_test - 现有的表

EmployeeName Effort Date 
aaa   8  2014-10-21 
bbb   9  2014-10-21 
ccc   7  2014-10-21 

@dtCSV - 表型作为参数

EmployeeName Effort 
aaa   10  
ccc   10 

预期输出:

EmployeeName Effort Date 
aaa   10  2014-10-21 
bbb   9  2014-10-21 
ccc   10  2014-10-21 

此代码给出错误 - 't'附近的语法不正确。什么是正确的语法来做到这一点。

ALTER PROCEDURE SaveEffort 
( 
    @TimesheetDate datetime, //(2014-10-21) 
    @dtCSV AS dbo.SaveEffort_TableType readonly 
) 
AS 
BEGIN 
    UPDATE tbl_test t 
     SET t.Effort = d.Effort 
    FROM @dtCSV d 
    WHERE t.EmployeeName = d.EmployeeName 
      AND t.[Date] = @TimesheetDate 
END 

回答

2
UPDATE t 
SET t.Effort = d.Effort 
FROM tbl_test t JOIN @dtCSV d 
ON t.EmployeeName = d.EmployeeName 
WHERE t.[Date] = @TimesheetDate 
+0

非常感谢你。这工作。如果我想为了可读性而写'update tbl_test',那么其余的代码应该如何。 – Qwerty 2014-10-22 06:03:55

+1

不客气。我们只能在UPDATE关键字之后立即更新表的别名。如果没有该别名,则应在整个SQL语句中使用真实的表名。 – 2014-10-22 09:30:35