2010-09-28 3 views
0

J'ai deux bases de données, les tableaux suivants:requête T-SQL pour supprimer la valeur non correspondante de ColumnA où la valeur n'existe pas dans ColumnB

DatabaseA TableA ColumnA (varchar (10)

DatabaseB TableB ColumnB (varchar (10)

je besoin d'une requête:

  • Ignore Null ou des chaînes vides
  • Trouve les lignes pour lesquelles la valeur de ColumnA n'existe pas dans ColumnB
    • Dans ce cas, remplace la valeur de la ligne non correspondante dans ColumnA avec « » (chaîne vide)

C'est dans un environnement MS SQL Server 2008.

Répondre

2

Vous pouvez le faire avec un LEFT OUTER JOIN comme indiqué ci-dessous:

UPDATE TableA 
SET columnA = '' 
FROM 
    TableA 
    LEFT JOIN TableB ON TableA.columnA = TableB.columnB 
WHERE 
    TableA.columnA IS NOT NULL AND TableA.columnA <> '' AND 
    TableB.columnB IS NULL; 
1
UPDATE TableA 
SET ColumnA = '' 
WHERE ColumnA IS NOT NULL 
    AND ColumnA <> '' 
    AND NOT EXISTS 
    (
    SELECT * 
    FROM TableB WHERE TableB.ColumnB = TableA.ColumnA 
    ) 
Questions connexes