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

时间:2010-08-11 22:53:14

标签: sql-server database sql-server-2008 linked-server

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

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。

1 个答案:

答案 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