在1台服务器上的2个不同数据库中的表之间使用INNER JOIN更新查询

Cha*_*lez 51 database sql-server syntax inner-join

需要一些SQL语法帮助:-)

两个数据库都在同一台服务器上

db1 = DHE
db2 = DHE_Import

UPDATE DHE.dbo.tblAccounts 
INNER JOIN DHE_Import.dbo.tblSalesRepsAccountsLink 
    ON DHE.dbo.tblAccounts.AccountCode = DHE_Import.tblSalesRepsAccountsLink.AccountCode 
SET DHE.dbo.tblAccounts.ControllingSalesRep = DHE_Import.dbo.tblSalesRepsAccountsLink.SalesRepCode
Run Code Online (Sandbox Code Playgroud)

我可以在Access中使用具有类似语法的链接表进行查询 - 但是SQL不喜欢它.

我确定这是一个简单的问题:-D

谢谢!

jer*_*rry 115

您可以将其称为样式,但我更喜欢使用别名来提高可读性.

UPDATE A    
  SET ControllingSalesRep = RA.SalesRepCode   
from DHE.dbo.tblAccounts A
  INNER JOIN DHE_Import.dbo.tblSalesRepsAccountsLink RA
    ON A.AccountCode = RA.AccountCode
Run Code Online (Sandbox Code Playgroud)

对于MySQL

UPDATE DHE.dbo.tblAccounts A 
  INNER JOIN DHE_Import.dbo.tblSalesRepsAccountsLink RA 
      ON A.AccountCode = RA.AccountCode 
SET A.ControllingSalesRep = RA.SalesRepCode
Run Code Online (Sandbox Code Playgroud)

  • 这似乎不适用于MySQL.正确的语法是`UPDATE DHE.dbo.tblAccounts A INNER JOIN DHE_Import.dbo.tblSalesRepsAccountsLink RA ON A.AccountCode = RA.AccountCode SET ControllingSalesRep = RA.SalesRepCode`. (33认同)

ram*_*ram 28

以下是MySQL语法:

UPDATE table1 
INNER JOIN table2 ON table1.field1 = table2.field2
SET table1.field3 = table2.field4 
WHERE ...... ;
Run Code Online (Sandbox Code Playgroud)

http://geekswithblogs.net/faizanahmad/archive/2009/01/05/join-in-sql-update--statement.aspx


Nik*_*vić 5

应该看起来像这样:

UPDATE DHE.dbo.tblAccounts
   SET DHE.dbo.tblAccounts.ControllingSalesRep = 
       DHE_Import.dbo.tblSalesRepsAccountsLink.SalesRepCode
  from DHE.dbo.tblAccounts 
     INNER JOIN DHE_Import.dbo.tblSalesRepsAccountsLink 
        ON DHE.dbo.tblAccounts.AccountCode =
           DHE_Import.tblSalesRepsAccountsLink.AccountCode 
Run Code Online (Sandbox Code Playgroud)

更新表在 FROM 子句中重复。


Ali*_*med 5

对不起它很晚了,但我想这对那些在这里寻找解决类似问题的人有帮助.set子句应该在update子句之后.因此,重新安排您的查询稍有改变就可以了.

UPDATE DHE.dbo.tblAccounts 
SET DHE.dbo.tblAccounts.ControllingSalesRep
    = DHE_Import.dbo.tblSalesRepsAccountsLink.SalesRepCode
from DHE.dbo.tblAccounts 
INNER JOIN DHE_Import.dbo.tblSalesRepsAccountsLink 
    ON DHE.dbo.tblAccounts.AccountCode
        = DHE_Import.tblSalesRepsAccountsLink.AccountCode 
Run Code Online (Sandbox Code Playgroud)