2013-06-15 4 views
-1

J'ai deux tables A et B dans sql server 2008. Les colonnes d'ID existent dans les deux tables Le tableau A a une nouvelle colonne Résultat La question est pour toutes les valeurs de la colonne ID dans la table B qui correspond aux valeurs de la colonne id dans la table A, alors je devrais mettre un TRUE sinon faux dans la colonne de résultat du tableau ASi les valeurs de colonnes de deux tables différentes correspondent, ajoutez la valeur

Merci à l'avance

obtenu la réponse !! pas sûr de la performance si la table a un 10 millions de lignes Nous avons essayé moi-même et a obtenu la réponse

Déclarez une table temporaire

déclarer table @temp (id int, résultat varchar)

insert dans @temp sélectionnez A1.id, A1.result de A A1 intérieur JOIN B B1 sur A1.id = B1.id

update @temp set résultat = true

+0

Il est préférable pour vous d'afficher votre réponse à votre question que de modifier la question d'inclure une réponse. Cela laisse les autres utilisateurs voir le résultat. En ce qui concerne votre réponse, elle ne définit rien à 'false' et ne met pas à jour' A'. Avons-nous mal compris la question? – HABO

Répondre

0

Vous devrez exécuter 2 requêtes comme ci-dessous Ac Fais ce que tu demandes.

update A set A.result = true from tableA A, tableB B where A.Id = B.Id 
update A set A.result = false from tableA A, tableB B where A.Id != B.Id 
+0

Merci pour votre réponse !! mais la syntaxe semble être incorrecte .. – user2489504

+0

Mis à jour la réponse. La syntaxe que j'ai donnée plus tôt était pour MySQL. – Mubin

0
declare @A as Table (Id Int, Result Bit NULL); 
declare @B as Table (Id Int); 
insert into @A (Id) values (1), (2), (4), (8); 
insert into @B (Id) values (1), (2), (3), (4); 
select * from @A; 
select * from @B; 
update A 
    set Result = case when B.Id is NULL then 0 else 1 end 
    from @A as A left outer join 
    @B as B on B.Id = A.Id; 
select * from @A; 
0

essayer cette

Update tableA a 
set result = true 
where exists (select 1 from tableB b where a.id=b.id); 

Update tableA a 
set result = false 
where not exists (select 1 from tableB b where a.id=b.id); 
Questions connexes