2010-08-11 11 views
0

J'essaie d'utiliser cette requête pour supprimer les lignes qui sont déjà sur une base de données de serveur lié:problème en essayant de résoudre la requête SQL pour renvoyer un seul résultat

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

Quand il y a seulement 1 ligne dans la table du serveur lié, SELECT [InHour] FROM [TDG-MBL-005].[TAMSTEST].[dbo].[Hour] renvoie cette seule ligne et le DELETE fonctionne comme prévu. Cependant, avec plusieurs lignes dans la table du serveur lié, cela ne fonctionne pas puisque cette partie de la requête renvoie plusieurs lignes comme résultat. Comment puis-je contourner cela?

S'il y a d'autres informations nécessaires, veuillez demander, je dois y arriver dès que possible.

Merci à l'avance, Eton B.

Répondre

7

changer votre signe égal à une déclaration IN

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

La clause IN vous permet d'avoir plusieurs valeurs dans la clause WHERE, et peut être utilisé dans sous-requêtes aussi bien. Voici more information.

+0

Heh! C'était assez facile .. maintenant je me sens comme beaucoup plus d'un débutant. Merci! –

+0

Content de pouvoir aider – LittleBobbyTables