2012-08-17 133 views
1

我正在使用MSSQL Server 2008. 我試圖更新MySQL數據庫。我加入了MySQL數據庫的MSSQL數據庫,現在試圖完成更新,但有一個奇怪的問題。通過鏈接MySQL數據庫在MySQL數據庫MSSQL更新

當我做下面的查詢,我得到的結果數量有限:

select * 
FROM [SQL-Database].[dbo].[Table] as c left join 
openquery(MYSQL, 'select * from MySQL-Database.Table') 
on c.KuNr=kunden_id collate German_PhoneBook_BIN 
where c.Auswahltyp='2' and c.[gelöscht]=0 
         and c.[Mietzeit bis]>GETDATE() and c.aktiveMail>'0' 

當我做了更新,它更新的所有行的數據庫:

update openquery(MYSQL, 'select * from MySQL-Database.Table') 
set paket_id=7 
FROM [SQL-Database].[dbo].[Table] as c left join 
openquery(MYSQL, 'select * from MySQL-Database.Table') 
on c.KuNr=kunden_id collate German_PhoneBook_BIN 
where c.Auswahltyp='2' and c.[gelöscht]=0 
         and c.[Mietzeit bis]>GETDATE() and c.aktiveMail>'0' 

的區別僅僅是選擇並更新,但它有點忽略更新中的「哪裏」。

+0

你可能會更好使用鏈接的數據庫和表別名的SQL服務器。 – 2012-08-17 16:19:24

回答

0

別名您OPENQUERY,它應該工作,如:

update k 
set paket_id=7 
FROM [SQL-Database].[dbo].[Table] as c left join 
openquery(MYSQL, 'select * from MySQL-Database.Table') as k 
on c.KuNr=k.kunden_id collate German_PhoneBook_BIN 
where c.Auswahltyp='2' and c.[gelöscht]=0 
and c.[Mietzeit bis]>GETDATE() and c.aktiveMail>'0' 
+0

嗨! 感謝您的快速回復。我現在更進一步瞭解您的查詢。 但還是有些區別:( 而不是錯誤地更新整個表(14.000〜行)現在更新514行,但選擇查詢顯示537行: - 。/ 我現在嘗試更新的所有行(與查詢下面),但它只是更新了1847行,不明白這一點。可能在ODBC或MSDASQL中有一個配置錯誤? 更新d set d.paket_id = 0 FROM [SQL-Database]。[dbo] [表]爲C左連接 OPENQUERY(MYSQL, 'SELECT * FROM的MySQL-Database.Table')上c.KuNr = d.kunden_id d 整理German_PhoneBook_BIN – 2012-08-17 20:35:15

+0

謝謝。我只是愚蠢的^^我是如此之深越來越查詢工作並顯示與select相同的結果,我忘記了SQL-Table有一些雙重值。剛剛檢查了雙值,voilá匹配總和。 – 2012-08-18 21:34:19