2017-02-20 4 views
1

Ich habe eine MySQL-Tabelle, wie untennur Zeilen auswählen mit Paar passenden

ID SHEET_NUMBER DAYS RESULT 
1 55201   9 10 
2 55209   28 25.5 
3 55209   28 27.9 
4 38558   7 12 
5 38552   5 19 
6 38559   5 5 

ich & nur nur Zeilen mit zunächst passenden Blattnummern auswählen möge, ob es, wenn es ein passendes Paar von 28 Tagen ist Proben

also wenn es nur einen 28 Tag gibt, wird es nichts auswählen, aber wenn es mindestens 2x 28 Tage gibt es beide Zeilen

Ich bin total verloren, ich weiß, ich sollte Gruppe von .. verwenden, aber ich bin mir seiner Verwendung unsicher.

thankyou

+2

Also was genau ist das erforderliche Ergebnis in Ihrem Beispiel festgelegt? –

Antwort

3

können Sie versuchen, die folgende Abfrage:

SELECT * 
FROM test 
WHERE sheet_number IN (
    SELECT sheet_number 
    FROM test 
    WHERE days = 28 
    GROUP BY sheet_number 
    HAVING COUNT(*) >= 2 
); 

Hier ist die SQL Fiddle.

+0

Arbeitete wie ein Traum, danke! –

1

Zuerst schreiben eine Abfrage, die sheet_number mit zwei oder mehr Reihen mit days Wert von 28.

SELECT d.sheet_number 
    FROM my_table_below d 
    WHERE d.days = 28 
    GROUP BY d.sheet_number 
    HAVING COUNT(1) > 1 

Mit dieser Abfrage findet, können wir als Inline-Ansicht, und kommen Sie wieder die Original-Tabelle verwenden, die die passenden Zeilen zu finden:

SELECT t.* 
    FROM (SELECT d.sheet_number 
      FROM my_table_below d 
      WHERE d.days = 28 
      GROUP BY d.sheet_number 
     HAVING COUNT(1) > 1 
     ) m 
    JOIN my_table_below t 
    ON t.sheet_number = m.sheet_number 
    AND t.days = 28 
ORDER BY t.sheet_number, t.id 

Lassen Sie den Zustand t.days = 28 auf der äußeren Abfrage, wenn die Spezifikation alle Zeilen für die sheet_number, nicht nur die Zeilen mitzurückzukehren 210. (Die Spezifikation ist ein wenig unklar.)

Verwandte Themen