2016-05-02 58 views
0

在閱讀了很多論壇並嘗試了很多例子之後,我似乎還是無法將我的舊mySQL Query轉換爲SQL Server 2008.許多示例包括從表1更新列時發現在表2中單值我用的是舊版本的MySQL劇本更新table1與來自表2的數據

UPDATE stock.tbldesk_inv As T1 
inner JOIN stock.deskinvfix AS T2 ON T1.serial_number = T2.SN 
SET T1.location = T2.Location, 
T1.asset_number = T2.AssNumber, 
T1.department = T2.dept, 
T1.status = T2.Status, 
T1.first_name = T2.firstn, 
T1.last_name = T2.lastn; 
DELETE FROM stock.deskinvfix; 
SELECT * FROM stock.deskinvfix; 

我發現它令人沮喪的,我可以簡單地改變表名重新使用一個簡單的querys

,因爲我不能將我的表重新命名爲T1或T2,這使得新查詢很難遵循。 personnaly我希望我能留在mySQL上。

UPDATE [InventoryDatabase].[dbo].[Hardware_Inventory] SET 
[InventoryDatabase].[dbo].[Hardware_Inventory].ComputerName = [InventoryDatabase].[dbo].[updatepcname].SCCMName 
FROM [InventoryDatabase].[dbo].[Hardware_Inventory] 
INNER JOIN [InventoryDatabase].[dbo].[updatepcname] ON [InventoryDatabase].[dbo].[Hardware_Inventory] 
WHERE [InventoryDatabase].[dbo].[Hardware_Inventory].SerialNumber = [InventoryDatabase].[dbo].[updatepcname].SCCMSerial 

誰能告訴我爲什麼SQL服務器不喜歡我使用的mySQL查詢?

+0

我沒有爲你找出答案,只是一些提示,使您的查詢更容易閱讀和遵循。 如果我明白你的意思是「重新命名」,你當然可以在SQL Server中做到這一點。它被稱爲[表別名](technet.microsoft.com/en-us/library/ms187455(v = sql.105).aspx)。 如果從InventoryDatabase運行查詢時不需要使用「[InventoryDatabase]」限定您的表格,因爲這將是默認值。您不需要指定「[dbo]」,因爲它是默認所有者。 試試這些東西,然後也許我們可以瞭解爲什麼SQL Server不喜歡你的查詢。 – nscheaffer

+0

在不相關的說明中,爲什麼我不能在一個評論中使用多個段落或使用Markdown?似乎很奇怪。 – nscheaffer

+0

應該是這樣簡單,但我從SQL Management Studio中 「UPDATE Hardware_Inventory invaild對象爲T1 SET T1.ComputerName = T2.SCCMName FROM INNER JOIN updatepcname爲T2 ON T1.SerialNumber = T2.SCCMSerial ' – GhislainJC

回答

0

這應該工作...

UPDATE T1 
SET T1.ComputerName = T2.SCCMName 
FROM Hardware_Inventory as T1 
INNER JOIN updatepcname as T2 ON T1.SerialNumber = T2.SCCMSerial 

諾埃爾

+0

當我第一次嘗試該查詢時,我仍然收到多部分標識符錯誤。但是在我關閉智能感知後,查詢工作。我有點困惑,爲什麼智能感知會導致問題。 – GhislainJC

+0

很奇怪。不確定。 – nscheaffer

+0

謝謝你,先生。這將幫助我批量編輯庫存數據庫。 – GhislainJC

相關問題