我正在尝试使用此查询删除链接服务器数据库中已有的行:
GO
USE TAMSTest
GO
DELETE from [dbo].[Hour]
WHERE [dbo].[Hour].[InHour] = (SELECT [InHour]
FROM [TDG-MBL-005].[TAMSTEST].[dbo].[Hour])
GO
当链接服务器表中只有一行时,SELECT [InHour] FROM [TDG-MBL-005].[TAMSTEST].[dbo].[Hour]
返回该行,DELETE按预期工作。但是,对于链接服务器表中的多行,它不起作用,因为查询的该部分返回多行作为其结果。我该如何解决这个问题?
如果需要进一步的信息,请询问,我需要尽快完成。
提前致谢, 伊顿B。
答案 0 :(得分:7)
将您的等号更改为IN
语句
DELETE from [dbo].[Hour]
WHERE [dbo].[Hour].[InHour] IN (SELECT [InHour]
FROM [TDG-MBL-005].[TAMSTEST].[dbo].[Hour])
IN子句允许您在WHERE子句中具有多个值,并且也可以在子查询中使用。这是more information。