使用内部联接进行 SQL 更新

Doing an SQL Update with an Inner Join

我正在尝试使用与另一个 table 的内部联接来更新用户 table 中的一个字段,但它似乎不起作用。我正在使用以下代码:

        SqlCommand cmd = new SqlCommand("UPDATE U SET User.firstname = @Firstname FROM dbo.User AS U INNER JOIN dbo.Driver AS D ON U.userid = D.driverid WHERE D.driverid = @Driverid");
        cmd.CommandType = CommandType.Text;
        cmd.Connection = conn;
        cmd.Parameters.Add("@Firstname", SqlDbType.VarChar, 50).Value = firstname;
        cmd.Parameters.Add("@Driverid", SqlDbType.VarChar, 50).Value = driverid;
        conn.Open();
        cmd.ExecuteNonQuery();

SQL:

UPDATE
  U 
SET 
  User.firstname = @Firstname 
FROM 
  dbo.User AS U 
  INNER JOIN dbo.Driver AS D ON 
    U.userid = D.driverid 
WHERE
  D.driverid = @Driverid

我收到以下错误:

System.Web.Services.Protocols.SoapException: 服务器无法处理请求。 ---> System.Data.SqlClient.SqlException: 关键字 'User'

附近的语法不正确

我哪里出错了?谢谢

table User 在您的选择部分中 defined/aliased 为 U,因此在更新字段列表中将其引用为 U

已编辑: 在 User 周围添加了方括号,这似乎是保留的 SQL 关键字。

UPDATE
  U 
SET 
  U.firstname = @Firstname 
FROM 
  dbo.[User] AS U 
  INNER JOIN dbo.Driver AS D ON 
    U.userid = D.driverid 
WHERE
  D.driverid = @Driverid