尝试修复SQL查询以返回单个结果时出现问题

Eto*_* B. 0 database sql-server linked-server sql-server-2008

我正在尝试使用此查询来删除链接服务器的数据库中已有的行:

GO
USE TAMSTest
GO
DELETE from [dbo].[Hour]
 WHERE [dbo].[Hour].[InHour] = (SELECT [InHour] 
                                  FROM [TDG-MBL-005].[TAMSTEST].[dbo].[Hour])
GO
Run Code Online (Sandbox Code Playgroud)

当链接服务器表中只有一行时,SELECT [InHour] FROM [TDG-MBL-005].[TAMSTEST].[dbo].[Hour]返回该行,DELETE按预期工作.但是,对于链接服务器表中的多行,它不起作用,因为查询的该部分返回多行作为其结果.我该如何解决这个问题?

如果需要进一步的信息请询问,我需要尽快完成.

在此先感谢,伊顿B.

Lit*_*les 7

将您的等号更改为IN语句

DELETE from [dbo].[Hour]
 WHERE [dbo].[Hour].[InHour] IN (SELECT [InHour] 
    FROM [TDG-MBL-005].[TAMSTEST].[dbo].[Hour])
Run Code Online (Sandbox Code Playgroud)

IN子句允许您在WHERE子句中具有多个值,并且也可以在子查询中使用.这是更多信息.