2010-03-17 7 views
4

Je suis en train de mettre à jour notre base de données et j'aimerais mettre à jour les lignes qui n'ont pas d'éléments existants dans une autre table. Je peux joindre les tables ensemble, mais je suis de la difficulté à grouper la table pour obtenir un décompte du nombre de lignesMise à jour de SQL Server avec jointure et groupe de gauche en ayant

UPDATE dpt 
SET dpt.active = 0 
FROM DEPARTMENT dpt 
LEFT JOIN DOCUMENTS doc on dpt.ID = doc.DepartmentID 
GROUP BY dpt.ID 
HAVING COUNT(doc.ID) = 0 

Que dois-je faire?

Répondre

5

Utilisation:

UPDATE DEPARTMENT 
    SET active = 0 
WHERE NOT EXISTS(SELECT NULL 
        FROM DOCUMENTS doc 
        WHERE doc.departmentid = id) 
+0

Gracias ... –

+0

senior @Marty Trenouth: de nada –

+1

Je suis sûr qu'il devrait être Señor ... à moins que vous essayiez d'insinuer que OMG Ponies est vieux! LOL – Leslie

4
UPDATE department 
SET  active = 0 
WHERE id NOT IN 
     (
     SELECT departmentId 
     FROM doc 
     ) 
+0

+1: Bats-moi de 12 secondes, sheesh ... –