sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #47949
Re: SQL - select intersect except
Kære Bjørn,
> Løsningen på problemet er:
>
> select i from t where v=1
> intersect
> select i from t where v=2
> except
> select i from t where v not in (1, 2);
>
> Dette finder den værdi "i" i tabellen "t" som har nøjagtig "v"=1 og "v"=2
> tilknyttet.
>
> Er der nogen der kender en smartere måde at gøre ovenstående på?
Her er et par alternativer:
select t1.i
from t t1, t t2
where t1.v = '1'
and t2.v = '2'
and t1.i = t2.i
and t1.i not in (select i from t where t.v not in (1,2));
eller
select t1.i
from t t1, t t2
where t1.v = '1'
and t2.v = '2'
and t1.i = t2.i
and t1.i not in (select i from t where t.v not in (t1.v,t2.v));
eller
select t1.i
from t t1, t t2
where t1.v = '1'
and t2.v = '2'
and t1.i = t2.i
and 2 = (select count(*) from t where t.i = t1.i);
Fortsat god søndag.
-- Niels
-------------------------------------------------------
Niels Hallenberg Email: nh@xxxxxx
The IT University of Copenhagen Tel.: +45-38 16 88 24
Glentevej 67 Fax: +45-38 16 88 99
DK-2400 Copenhagen NV WWW: www.it.edu
-------------------------------------------------------
Follow ups