【问题标题】:SQL Update a table from another tableSQL 从另一个表更新一个表
【发布时间】:2016-05-27 21:58:44
【问题描述】:

我是 SQL Server 的完全初学者,我已经达到了我的极限。

目前我正在使用一个脚本来使用一个列从另一个表中更新一个表。由于这两个数据库都分配给了 2 个不同的 3rd 方软件,我创建了一个 .bat 脚本用于 windows 服务器中的任务管理器,这样它可以每 10 分钟更新一次。

虽然这已经过测试并且有效,但我觉得必须有一种方法可以在两个数据库之间创建关系,而无需使用该任务。

UPDATE therefore.dbo.thecat51
SET num_factura = 
 (SELECT therefore.dbo.documentos.num_factura
 FROM therefore.dbo.Documentos
 WHERE therefore.dbo.thecat51.num_albaran=therefore.dbo.documentos.num_albaran)
WHERE therefore.dbo.thecat51.num_albaran = 
 ( SELECT therefore.dbo.documentos.num_albaran
 FROM therefore.dbo.Documentos
 WHERE therefore.dbo.thecat51.num_Albaran = therefore.dbo.documentos.num_albaran)

另外,我们使用的是 SQL Server Express,所以我没有创建计划作业的选项。

【问题讨论】:

  • 链接服务器可能就是您正在查看的内容 -> google.fr/…

标签: sql sql-server-express


【解决方案1】:

您可以通过INNER JOIN 执行UPDATE 来执行您需要的更新:

UPDATE A SET
    num_factura = B.num_factura
FROM therefore.dbo.thecat51 A
    INNER JOIN therefore.dbo.Documentos B
        ON A.num_albaran = B.num_albaran

【讨论】:

    【解决方案2】:

    在两个表之间使用INNER JOIN。在我发布这篇文章时,您还没有告诉我们您使用的是哪个 RDBMS,所以我将为 SQL Server 和 MySQL 提供答案:

    SQL 服务器:

    UPDATE t1 
    SET t1.num_factura = t2.num_factura
    FROM therefore.dbo.thecat51 AS t1
    INNER JOIN therefore.dbo.Documentos AS t2
        ON t1.num_albaran = t2.num_albaran
    

    MySQL:

    UPDATE therefore.dbo.thecat51 AS t1
    INNER JOIN therefore.dbo.Documentos AS t2
        ON t1.num_albaran = t2.num_albaran
    SET t1.num_factura = t2.num_factura
    

    【讨论】:

    • 我试过了,它工作,但它的工作方式相同,意思是,我需要手动更新表,或者创建每 10 分钟执行一次的脚本。我要问的是一种链接两个表的方法,以便每次添加值时它们都会自动更新。感谢您的快速响应。
    • 抱歉回复晚了,但我一直在做其他工作。我搜索了触发器,这似乎就是我要寻找的。​​span>
    猜你喜欢
    • 1970-01-01
    • 2013-02-15
    • 2022-01-23
    • 2022-01-18
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多