简体   繁体   English

使用内部联接执行SQL更新

[英]Doing an SQL Update with an Inner Join

I am trying to update a field in the user table using an inner join with another table, but it does not seem to be working. 我试图使用内部联接与另一个表更新用户表中的字段,但它似乎没有工作。 I am using the code below: 我使用下面的代码:

        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: 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

I am getting the following error: 我收到以下错误:

System.Web.Services.Protocols.SoapException: Server was unable to process request. System.Web.Services.Protocols.SoapException:服务器无法处理请求。 ---> System.Data.SqlClient.SqlException: Incorrect syntax near the keyword 'User' ---> System.Data.SqlClient.SqlException:关键字'User'附近的语法不正确

Where could I be going wrong? 我哪里可能出错? Thanks 谢谢

The table User is defined/aliased as U in your selecting section, so thus reference it as U in the update fields list: User在您的选择部分中被定义/别名为U ,因此在更新字段列表中将其引用为U

EDITED : Added square brackets around User which seems to be a reserved SQL keyword. 编辑 :在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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM