SQL来更新表

SQL来更新表,sql,sql-server,tsql,join,sql-update,Sql,Sql Server,Tsql,Join,Sql Update,因此,我有一个表,其中包含以下列: RequestID Owner Name Owner Email Date GUID Comments (etc) 1 Joe Soap joe.soap@gmail.com 1/2/19 asdfasdfasdf 2 Sally Soap ssoap@hotmail.com 9/7/15 asf2f23f23f2 3 Joe Sch

因此,我有一个表,其中包含以下列:

RequestID  Owner Name   Owner Email           Date   GUID         Comments (etc)
1          Joe Soap     joe.soap@gmail.com    1/2/19 asdfasdfasdf 
2          Sally Soap   ssoap@hotmail.com     9/7/15 asf2f23f23f2
3          Joe Schmo    jschmo@yahoo.com      1/1/19 af2f2f2f2f2f
4          Adam ABC     abc_adam@adam.com     3/2/18 f89282822828
我所做的是将表导出到excel文件,并在excel文件中进行更改。我已对特定RequestID的“所有者电子邮件”和“所有者名称”列进行了更改

我试图做的是将这三列导入临时表(“RequestID”、“所有者名称”、“所有者电子邮件”)。然后,我想根据请求ID更新主表。因此,它将更新所有者名称和所有者电子邮件,如下所示:

RequestID  Owner Name      Owner Email
3          Joe Schmo Jr    joesnewemailaddr@gmail.com
1          Joe Replacement newjoe@yahoo.com
我想我需要的脚本是:

UPDATE
    MainTable
SET
    MainTable.OwnerName = New.OwnerName
    MainTable.OwnerEmail = New.OwnerEmail
FROM
    MainTable
INNER JOIN
    UpdateTable
ON 
    MainTable.RequestID = UpdateTable.RequestID
这应该可以,对吗?

我假设“UpdateTable”是临时表?您的SQL不正确,但您也没有指定DBMS,因此它是这样的:

UPDATE
   MainTable
SET
   MainTable.OwnerName = New.OwnerName,
   MainTable.OwnerEmail = New.OwnerEmail
FROM
   MainTable
INNER JOIN
   UpdateTable AS New
 ON 
   MainTable.RequestID = New.RequestID
注意我如何将UpdateTable别名为New。但是,您可以省略
New
别名,在集合中使用
UpdateTable

UPDATE
   MainTable
SET
   MainTable.OwnerName = UpdateTable.OwnerName,
   MainTable.OwnerEmail = UpdateTable.OwnerEmail
FROM
   MainTable
INNER JOIN
   UpdateTable
 ON 
   MainTable.RequestID = UpdateTable.RequestID

嗯,当你运行代码时,它是对的吗?应该已经澄清-我没有访问测试环境的权限,所以希望有人在我运行它之前检查一下以确保它已签出:)
应该已经澄清-我没有访问测试环境的权限,因此,我希望有人在我运行它之前检查一下,确保它已签出。请:)
您始终可以启动事务,更新表,然后选择一些示例行,以查看在发出提交之前是否获得了所需的结果。更新语法在很大程度上取决于您使用的DBMS。UpdateTable/New名称不匹配,New.OwnerName后缺少逗号。您使用的是哪个dbms?(代码中的更新是特定于产品的。)谢谢:)非常感谢