2012-03-27 42 views
30

需要一些SQL語法幫助:-)更新查詢有內2級不同的數據庫表之間的連接1臺服務器上

兩個數據庫在同一臺服務器

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 

我可以在Access做一個查詢上用類似的語法鏈接表 - 但是SQL不喜歡它。

我敢肯定,這是一個簡單的問題:-D

謝謝!

回答

69

你可以稱它爲風格,但我更喜歡別名來提高可讀性。

UPDATE A  
    SET ControllingSalesRep = RA.SalesRepCode 
from DHE.dbo.tblAccounts A 
    INNER JOIN DHE_Import.dbo.tblSalesRepsAccountsLink RA 
    ON A.AccountCode = RA.AccountCode 
+22

這似乎並沒有在MySQL的工作。正確的語法會出現'UPDATE DHE.dbo.tblAccounts A INNER JOIN DHE_Import.dbo.tblSalesRepsAccountsLink RA ON A.AccountCode = RA.AccountCode SET ControllingSalesRep = RA.SalesRepCode'。 – user1111929 2015-01-30 21:04:18

+0

這是正確的...上面的答案(由@jerry提議)不適用於mysql。 – htobon 2015-05-26 16:42:35

+0

非常感謝你 – 2016-07-07 07:54:19

1

應該是這樣的:

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 

更新表中重複FROM子句。

4

對不起,但我想這將有助於那些降落在這裏尋找類似問題的解決方案。 set子句應該在更新子句之後。因此,重新安排您的查詢有點改變的工作。

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 
+1

幫了我。謝謝。 – 2017-10-27 12:00:32

1

在此解釋http://erabhinavrana.blogspot.in/2014/01/how-to-execute-update-query-by-applying.html

它也有其他有用的代碼片段,通常使用的。

update <dbname of 1st table>.<table name of 1st table> A INNER JOIN <dbname of 2nd table>.<table name of 2nd table> RA ON A.<field name of table 1>=RA.<field name of table 2> SET A.<field name of table 1 to be updated>=RA.<field name of table 2 to set value in table 1> 

用您的合適值替換<>中的數據。

就是這樣。 源:

http://www.dynamic-coders.com/how-to-update-two-different-tables-in-different-databases-on-same-server

+0

你應該在你的文章中粘貼提供的鏈接摘要以防止死鏈接 – foibs 2014-01-09 13:25:10

1

這可能是有用的

Update 
    A INNER JOIN B ON A.COL1=B.COL3 
SET 
    A.COL2='CHANGED', A.COL4=B.COL4,...... 
WHERE ....; 
0
//For Access Database: 
UPDATE ((tblEmployee 
LEFT JOIN tblCity ON (tblEmployee.CityCode = tblCity.CityCode)) 
LEFT JOIN tblCountry ON (tblEmployee.CountryCode = tblCountryCode)) 
SET tblEmployee.CityName = tblCity.CityName, 
tblEmployee.CountryName = tblCountry.CountryName 
WHERE (tblEmployee.CityName = '' OR tblEmployee.CountryName = '') 
0
Update one table using Inner Join 

    UPDATE Table1 SET name=ml.name 
FROM table1 t inner JOIN 
Table2 ml ON t.ID= ml.ID 
3
UPDATE table1 a 
inner join table2 b on (a.kol1=a.b.kol1...) 
SET a.kol1=b.kol1 
WHERE 
a.kol1='' ... 

對我來說,直到語法工作-MySQL

相關問題