2016-06-03 14 views
0

Ich habe diese Tabelle, ähnlich wie die unten. Tabelle zeigen Spielerpunkte:MYSQL Filter unsere gleichen Zeilen, die nebeneinander sind

  • s Hauptspielerpunkte
  • d sub Hauptpunkte;
  • Datum wenn es berechnet wird.

Ich möchte in der Lage sein, Zeilen zu filtern, die als s gleich sind und d bleiben nebeneinander. Das Datum sollte das letzte sein, das gleich ist.

Zum Beispiel, hier sollten wir ri - 13 überspringen, da es das gleiche wie ri-12 ist. Auch überspringen Ri - 15,19,20,21,22,23 und so weiter. Die Zeilen 28, 29, 30, 31 sollten jedoch nicht übersprungen und gruppiert werden.

Ich frage, weil GROUP BY für meinen Fall nicht funktionieren. Irgendwelche Ideen?

Tabelle Beispiel:

ri date  s d 
1 2016-05-23 4 355 
2 2016-05-16 4 352 
3 2016-05-09 4 349 
4 2016-05-02 4 352 
5 2016-04-25 4 358 
6 2016-04-18 4 359 
7 2016-04-11 4 200 
8 2016-04-04 4 201 
9 2016-03-21 4 198 
10 2016-03-07 4 199 
11 2016-02-29 4 201 
12 2016-02-22 4 203 
13 2016-02-15 4 203 
14 2016-02-08 4 200 
15 2016-02-01 4 200 
16 2016-01-18 4 201 
17 2016-01-11 4 198 
18 2016-01-04 4 183 
19 2015-12-28 4 183 
20 2015-12-21 4 183 
21 2015-12-14 4 183 
22 2015-12-07 4 183 
23 2015-11-30 4 183 
24 2015-11-23 4 182 
25 2015-11-16 4 149 
26 2015-11-09 4 148 
27 2015-11-02 4 145 
28 2015-10-26 4 109 
29 2015-10-19 4 110 
30 2015-10-12 4 109 
31 2015-10-05 4 110 
32 2015-09-28 4 106 
33 2015-09-21 4 108 
34 2015-09-14 4 109 
35 2015-08-31 5 108 
36 2015-08-24 5 108 
37 2015-08-17 5 136 
38 2015-08-10 5 136 
39 2015-08-03 4 123 
40 2015-07-27 4 122 
41 2015-07-20 4 125 
42 2015-07-13 4 126 
43 2015-06-29 4 130 
44 2015-06-22 4 128 
45 2015-06-15 4 126 
46 2015-06-08 4 120 
47 2015-05-25 9 120 
48 2015-05-18 9 122 
49 2015-05-11 9 121 
50 2015-05-04 9 119 
51 2015-04-27 9 122 
52 2015-04-20 10 124 
53 2015-04-13 9 173 
54 2015-04-06 9 172 
55 2015-03-23 8 174 
56 2015-03-09 7 89 
57 2015-03-02 7 89 
58 2015-02-23 7 92 
59 2015-02-16 7 96 
60 2015-02-09 8 93 
61 2015-02-02 9 88 
62 2015-01-19 4 89 
63 2015-01-12 4 89 
64 2015-01-05 4 94 
+0

Hallo zu klären zur Zeit mache ich 'SELECT Datum, s, d FROM player_points WHERE player_id = 1.497.103 und Datum>‚2015-01-01'' Wenn ich 'SELECT Datum , s, d FROM player_points WHERE player_id = 1497103 UND Datum> '2015-01-01' GROUP BY s, d' Es werden einige wichtige Ergebnisse übersprungen. –

+1

imo, Bitte Code nie in Kommentaren eingeben - ** es ist nicht lesbar **. Stattdessen fügen Sie es zu Ihrer Frage hinzu. So, 1) Wir können es leicht verstehen. 2) Neue Leute müssen die Kommentare nicht lesen, um alle Informationen zu erfahren, die Sie uns erklären wollten. Danach können Sie den Kommentar löschen, da er den Thread nur schwer verständlich macht. Wenn Sie eine funktionierende Antwort bekommen, dann müssen Sie sich nicht darum kümmern :) –

+1

Ich weiß genau, wie der Datensatz aussieht. Aber ich habe keine Ahnung, wie das gewünschte Ergebnis aussehen soll. Ich frage mich, ob Sie das irgendwie reparieren können? – Strawberry

Antwort

0

Coulb sein, das Sie benötigen einen Join ..

select a.*, b.* 
from my_table as a 
inner join my_table as b on a.ri != b.ri 
where (a.d - b.d) = 0; 
0

Dies kann getan werden, not exists verwenden. Dies würde die erste von vielen Reihen auswählen, die die gleichen s und d haben.

select * 
from tablename t1 
where not exists (select 1 from tablename t2 
        where t1.ri = t2.ri+1 and t1.s = t2.s and t1.d = t2.d)