DISTINCT ueber zwei Spalten?
DISTINCT ueber zwei Spalten?
am 08.10.2006 13:38:41 von Sebastian Suchanek
Hallo NG!
Kann ich eine MySQL-Abfrage so gestalten, daß ich alle Einträge,
die in einer *oder* einer zweiten Spalte stehen, jeweils nur
einmal erhalte?
Also sowas wie "SELECT DISTINCT (spalte1 AND spalte2)...".
Als Beispiel:
spalte1 | spalte2
--------+--------
1 | NULL
1 | 2
2 | 5
3 | NULL
4 | 5
Gewünschtes Ergebnis:
foo
---
1
2
3
4
5
Tschüs,
Sebastian
PS: Ob die NULL-Werte wie im obigen Beispiel nun wirklich
'rausfliegen oder nicht, ist nicht so wichtig. Das kann ich
notfalls auch im weiterverarbeitenden Skript lösen.
--
http://www.baumaschinen-modelle.net
http://www.schwerlast-rhein-main.de
Re: DISTINCT ueber zwei Spalten?
am 08.10.2006 13:57:44 von dnoeth
Sebastian Suchanek wrote:
> spalte1 | spalte2
> --------+--------
> 1 | NULL
> 1 | 2
> 2 | 5
> 3 | NULL
> 4 | 5
>
> Gewünschtes Ergebnis:
>
> foo
> ---
> 1
> 2
> 3
> 4
> 5
Du suchst die Vereinigungsmenge:
select spalte1 from tab
union
select spalte2 from tab
> PS: Ob die NULL-Werte wie im obigen Beispiel nun wirklich
> 'rausfliegen oder nicht, ist nicht so wichtig.
select spalte1 from tab where spalte1 is not null
union
select spalte2 from tab where spalte2 is not null
Dieter
Re: DISTINCT ueber zwei Spalten?
am 08.10.2006 15:06:56 von Johannes Vogel
Hi Dieter, Sebastian
Dieter Noeth wrote:
> Du suchst die Vereinigungsmenge:
> select spalte1 from tab
> union
> select spalte2 from tab
>> PS: Ob die NULL-Werte wie im obigen Beispiel nun wirklich
>> 'rausfliegen oder nicht, ist nicht so wichtig.
> select spalte1 from tab where spalte1 is not null
> union
> select spalte2 from tab where spalte2 is not null
Vollständigkeitshalber:
select distinct spalte from (
select spalte1 spalte from tab
union
select spalte2 spalte from tab) a
where spalte is not null;
HTH; Johannes
Re: DISTINCT ueber zwei Spalten?
am 08.10.2006 15:30:53 von Thomas Rachel
Johannes Vogel wrote:
>> select spalte1 from tab where spalte1 is not null
>> union
>> select spalte2 from tab where spalte2 is not null
>
> Vollständigkeitshalber:
>
> select distinct spalte from (
> select spalte1 spalte from tab
> union
> select spalte2 spalte from tab) a
> where spalte is not null;
Ist eine Abkürzung, ja. Aber DISTINCT an der Stelle bringt nix, weil UNION
(im Gegensatz zu UNION ALL) bereits DISTINCTet...
Thomas
--
Murphy's Gesetz ist nicht umkehrbar. Das Auto zu waschen, damit es
regnet, funktioniert nicht.