2017-07-20 1 views
0

Lets sagen, ich habe eine Tabelle wie dieseSQL-Select-Gruppe, in der einige Attribut gleiche

A B C 
----- 
1 a 12 
2 a 23 
3 b 43 
4 c 25 
5 c 44 
6 d 34 

Wie nur Zeilen auszuwählen, wobei B in einer anderen Zeile existiert?

Ergebnis wäre:

A B C 
----- 
1 a 12 
2 a 23 
4 c 25 
5 c 44 
+1

welche RDBMS verwenden Sie? Sie suchen einfach nach doppelten Datensätzen :) – LONG

Antwort

1

erreichen können einfach exists verwenden:

select t.* 
from t 
where exists (select 1 
       from t t2 
       where t2.b = t.b and t2.a <> t.a 
      ); 

Mit einem Index auf t(b, a) ist dies wahrscheinlich die schnellste Methode.

3

Ich bin nicht sicher, was man erwartet aber Beseitigung B & D

wir wie dieses

Select T.A,T.B,T.C from Table T 
INNER JOIN (
SELECT B FROM Table 
groUP by b 
having count(B) > 1)TT 
ON T.B = TT.B 
Verwandte Themen