SQL: Wie kann man Werte innerhalb einer Spalte miteinander vergleichen?

3 Antworten

Welche Werte willst Du vergleichen? In Deinem Beispiel vergleichst Du die id. Ich gehe davon aus, dass id der Primärschlüssel ist und da kann es gar keine doppelten Werte geben. Deshalb ist diese Abfrage sinnlos, auch wenn sie formal korrekt ist ohne Fehler ausgeführt wird.

Was Du möchtest, geht mit einem Subselect. Dieser untergeordnete Select zählt die Spalten und speichert jeden Wert, der mehr als einmal vorkommt. Der übergeordnete Hauptselect benutzt diese intern gespeicherten Werte für die Auswahl und gibt diese mit ihrer id aus:

SELECT spalte, id FROM freundschaft
WHERE spalte IN
(SELECT spalte, COUNT(*) FROM freundschaft
GROUP BY spalte
HAVING COUNT(*) > 1)

Für spalte setze den Namen der Spalte ein, die Du auf Mehrfache überprüfen möchtest. Für id setze den Namen der id ein, so wie sie in der Tabelle freundschaft hinterlegt ist (vermutlich auch id).

Du bekommst mit dieser Abfrage alle Werte der zu prüfenden Spalte mit ihrer id, die mehr als einmal vorkommen.



Meinst du vieleicht so was:

create table t as 
select
count(id) as anzahl,id
from
freundschaft
groub by
id;

select
t1.id ,
t2.id ,
t1.anzahl
from
t as t1,
t as t2
where
t1.anzahl = t2.anzahl and t1.id <> t2.id;

Problem ist natürlich, das es viele Ids geben kann, die die gleiche Anzahl haben und dann wird das Ergebnis recht groß.

IF Abfrage.       If > ..?.. then ..?.. Else < ....?..

.