2012-04-11 7 views
0

Denken Sie an eine Tabelle wie folgt,Get-IDs basierend entsprechenden Wertepaare eindeutig

ID  Value  
100 1  
100 2  
101 1  
101 2 
102 1  
103 2 
104 1 

Jetzt möchte ich die IDs Kombination basierend auf ihren entsprechenden Wert eindeutig abzurufen. (dh) 100 hat sowohl 1 als auch 2 als Werte. 101 hat auch 1 und 2. Jetzt will ich nicht 100 und 101. Ich will nur eine von ihnen (entweder 100 oder 101). Ebenso möchte ich nicht beide 102 und 104, da beide Werte 1 haben. Ich will nur von ihnen. Normalerweise sollte mein Ergebnis wie folgt sein

ID 
100 
102 
103 

Ich möchte die IDs mit entsprechenden Wertpaare eindeutig. Ich benutze MYSQL. Bitte helfen Sie mir, die Abfrage zu schreiben, um dies zu finden.

+0

Ich denke, Sie müssen vielleicht den Hintergrund Ihrer Situation erklären, damit wir verstehen, was Sie erreichen wollen. Es klingt, als ob eine Art relationaler Teilung die Lösung sein wird. Wenn es immer zwei Werte für jede ID gäbe, wäre dies trivial, aber wenn es variable Zahlen von Werten pro ID gibt, ist es viel komplexer. – nnichols

Antwort

2

Man könnte so etwas wie dies versuchen:

select 
    min(id) 
from (
    select 
    id, 
    group_concat(value order by value) as values 
    from <table> 
    group by id 
) r 
group by values 

Wie das funktioniert:

  • die Unterabfrage gibt eine Zeile für jede ID, mit einer zusätzlichen Spalte, die alle Werte (in sortiert hat Ordnung, die für den nächsten Schritt wichtig ist)
  • die äußeree Abfrage wählt die Minimal ID für jeden Satz von Werten
+0

Das wird ihm die Werte, und er will die IDs .. Auch brauchen Sie eine Gruppe von in der Unterabfrage für die group_concat zu arbeiten .. – barsju

+0

Nun, Sie haben nur Ihre Antwort geändert .. Das ist Betrug;) – barsju

+1

@ barsju Ich erkannte es war falsch und hat es behoben, bevor du deine Nachricht hinterlassen hast. –

Verwandte Themen