when exists

Status
Niet open voor verdere reacties.

DaanOoms

Nieuwe gebruiker
Lid geworden
31 okt 2012
Berichten
3
Ik heb de volgende data:

A B
1 1
2 2
2 .
3 .

Ik wil een nieuwe kolom met de waarde 1 als de waarde in A niet in B bestaat:

A B output
1 1 0
2 2 0
2 . 0 (want de waarde van A (2) staat ergens in kolom B)
3 . 1 (want de waarde van A (3) staat nergens in kolom B)
 
Als je verstand van PHP hebt, zou je d.m.v. een query alle waardes uit kolom A kunnen pakken en dan d.m.v. een while loop kunnen controleren of die waarde ook in kolom B zit. Vervolgens met een if-else in je while loop kan je dus een 0 of een 1 aangeven in de derde kolom.
 
Bedoel je één van onderstaande query's misschien?
Ze doen beide hetzelfde echter is de 2e qua performance iets beter.

select t.a,
t.b,
case when t.a in ( select t1.b
from tab1 t1 )
then 0
else 1
end
from tab t


select t.a,
t.b,
case when exists ( select 1
from tab1 t1
where t1.b = t.a
)
then 0
else 1
end
from tab t
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan