使用内部联接进行 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
我正在尝试使用与另一个 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