[MySQL] - Dringende Hilfe, bitte!

Abdullah2015

Grünschnabel
Guten Abend Community,

Ich recherchiere seid einigen Tagen und komme leider nicht auf mein gewünschtes Ergebnis.

Mein Problem ist wie folgend:

Tabelle
#id user typ
1 1 1
2 1 1
3 1 0
4 1 1
5 1 0
6 1 0

Ausgegeben möchte ich:

Tabele:
#id user typ
1 1 1
3 1 0
4 1 1
5 1 0


Habe Jegliches wie DISTINCT oder GROUP BY versucht, jedoch will ich nur doppelte Einträge die aufeinander folgen ausblenden. D.h. falls sie einzelt stehen soll sie noch gezeigt werden, sollte ein Datensatzt mit der selben Typ darauf folgen soll nur der erste gezeigt werden.

Hoffe habe verständlich formuliert.

Mit musikalischen Grüßen,

A. Sahin
 
Eine Möglichkeit ist mit Variablen:
SQL:
SELECT
  t2.id,
  t2.user,
  t2.typ
FROM
  (
    SELECT
      IFNULL(@last_user = t.user AND @last_typ = t.typ, FALSE) AS hide,
      t.*,
      @last_user := t.user,
      @last_typ := t.typ
    FROM
      (SELECT @last_user:=NULL, @last_typ:=NULL) AS vars,
      (SELECT * FROM my_table ORDER BY id) AS t
   ) AS t2
WHERE
  NOT t2.hide

Hier der Link zu meinem Test: http://sqlfiddle.com/#!2/999fe5/4
 
Moin Abdullah2015,

eine weitere Möglichkeit wäre
SQL:
select B.#id, b.user, b.typ from my_Table B
left join my_Table A on b.#id=a.#id +1 and b.user=a.user and b.typ=a.typ
where a.#id is null;

Grüße
Biber

P.S. Im Gegensatz zu yaslaws Lösung würde meine Variante nur funktionieren, wenn die #id-Werte lückenlos sequentiell aufsteigen, d.h. keine #id in der Reihe 1, 2, 3... fehlt.
 
Zuletzt bearbeitet:
Ersteinmal, einen wunderschönen guten Tag :) !

Ich möchte mitteillen das ich von dem Forum sehr sehr positiv überrascht bin, sowohl als auch von euch beiden!

Ein persönlichen Dank an Yaslaw und Biber3.

Ich habe mich für die Variante von Yaslaw entschieden.

Dankeschön, nocheinmal!

A. Sahin
 

Neue Beiträge

Zurück