【问题标题】:SQL to update a tableSQL 更新表
【发布时间】:2019-06-21 22:47:09
【问题描述】:

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

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”、“Owner Name”、“Owner Email”)。然后我想根据请求 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

应该这样吧?

【问题讨论】:

  • 嗯,运行代码的时候,是不是这样?
  • 应该澄清一下 - 我无法访问测试环境,所以希望有人在我运行它之前检查一下以确保它检查出来:)
  • Should have clarified - I don't have access to a test environment, so would just like someone to look this over to make sure it checks out before I run it please :)
  • 您可以随时启动事务,更新表,然后选择一些示例行以查看在发出提交之前是否获得了所需的结果。更新语法很大程度上取决于您使用的 DBMS。名称不匹配 UpdateTable / New 并且在 New.OwnerName 之后缺少逗号。
  • 您使用的是哪个 dbms? (该 UPDATE FROM 代码是特定于产品的。)

标签: sql sql-server tsql join sql-update


【解决方案1】:

我假设“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 别名并在 SET 中使用 UpdateTable

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

【讨论】:

  • 谢谢 :) 非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-28
  • 2015-10-01
  • 2018-04-18
  • 2016-04-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多