【发布时间】:2016-05-02 13:08:51
【问题描述】:
在阅读了许多论坛并尝试了许多示例之后,我似乎仍然无法将旧的 mySQL 查询转换为 SQL Server 2008。我读取的许多示例包括在表 2 中找到单个值时更新表 1 中的列。我使用的旧 mySQL 脚本是
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;
我发现我可以简单地更改表名以重新使用简单的查询,这很令人沮丧
因为我无法将我的表重新命名为 T1 或 T2,这使得新查询难以遵循。我个人希望我能留在 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 Server 不喜欢我使用的 mySQL 查询?
【问题讨论】:
-
我没有给你答案,只有一些提示可以让你的查询更具可读性和更容易理解。如果我理解您所说的“重新命名”是什么意思,您当然可以在 SQL Server 中做到这一点。它被称为 [表别名](technet.microsoft.com/en-us/library/ms187455(v=sql.105).aspx)。如果从 InventoryDatabase 运行查询时,您不需要使用“[InventoryDatabase]”限定您的表,因为这是默认设置。您也不需要指定“[dbo]”,因为它是默认所有者。试试这些东西,然后也许我们可以了解为什么 SQL Server 不喜欢您的查询。
-
在不相关的注释上,为什么我不能有多个段落或在评论中使用 Markdown?看起来很奇怪。
-
它应该像这样简单,但是我从 SQL Management Studio 'UPDATE Hardware_Inventory as t1 SET T1.ComputerName = T2.SCCMName as T2 ON INNER JOIN updatepcname as T2 ON T1.SerialNumber = T2 .SCCMserial '
标签: mysql sql-server-2008 sql-update transition