2010-11-24 16 views
2

Je voudrais faire quelque chose comme ceci:Sélection des enregistrements à partir de sous-requête sur plusieurs colonnes

Supposons que j'ai deux tables, myTable1 et myTable2. Supposons que ces deux tables ont les colonnes myColumn1 et myColumn2.

update 
    myTable1 
set 
    myTable1.myFlagColumn = 1 
where 
    myTable1.myColumn1, myTable1.myColumn2 
     in 
      (select myTable2.myColumn1, myTable2.myColumn2 from myTable2) 

Essentiellement, je veux changer une valeur dans myTable1 s'il y a des lignes où les deux colonnes en match myTable1 et myTable2.

Est-ce possible?

+0

ma suggestion est d'utiliser la requête de sélection pour chaque colonne – David

+0

l'aide d'une requête de sélection pour chaque colonne est pas la même. Si myTable2 a des lignes ((1, 2), (3, 4)) et myTable1 a (1, 4), les sélections séparées par colonne seront positives, quand il veut un résultat négatif. – AFoglia

Répondre

5

Oui, mais vous utiliserez une clause EXISTS:

update 
    myTable1 
set 
    myTable1.myFlagColumn = 1 
where 
    EXISTS 
    (select * FROM myTable2 WHERE myTable2.myColumn1 = myTable1.myColumn1 
    AND myTable2.myColumn2 = myTable1.myColumn2)