Проблема при попытке исправить SQL-запрос для возврата одного результата - PullRequest
0 голосов
/ 12 августа 2010

Я пытаюсь использовать этот запрос для удаления строк, которые уже находятся в базе данных связанного сервера:

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

Если в таблице связанного сервера есть только 1 строка, SELECT [InHour] FROM [TDG-MBL-005].[TAMSTEST].[dbo].[Hour] возвращает эту единственную строку, и команда DELETE работает как положено. Однако с несколькими строками в таблице связанного сервера это не работает, так как эта часть запроса возвращает несколько строк в качестве результата. Как я могу обойти это?

Если требуется дополнительная информация, пожалуйста, спросите, мне нужно сделать это как можно скорее.

Заранее спасибо, Итон Б.

1 Ответ

7 голосов
/ 12 августа 2010

Измените знак равенства на оператор IN

DELETE from [dbo].[Hour]
 WHERE [dbo].[Hour].[InHour] IN (SELECT [InHour] 
    FROM [TDG-MBL-005].[TAMSTEST].[dbo].[Hour])

Предложение IN позволяет вам иметь несколько значений в предложении WHERE, а также может использоваться в подзапросах.Вот больше информации .

...