Tom: minimaler Abstand zwischen zwei Werten einer Spalte

Beitrag lesen

Hello,

Ich werd das ganze mal austesten. Danke Euch beiden!

Das ist ausgetestet!

Ist nur noch ein Schreibfehler im Statement gewesen.
Das sollte immer @id1 heißen und nicht einmal @id.

set @z1:=0, @diff:=9999999999, @id1:=0;

select id,
      zeitstempel,
      (zeitstempel-@z1) as diff,
      if(zeitstempel-@z1 < @diff, @id1:=id, @id1) as id1,
      if(zeitstempel-@z1 < @diff, @diff:= zeitstempel-@z1, @diff) as mindiff,
      @z1:=zeitstempel as z1
  from zeit order by zeitstempel limit 1;

So würdest Du nun mit zwei Statements auskommen.
In der berechnten Spalte id1 würde dann zum Schluss die ermittelte ID für den Treffer stehen.
Der Ergebnisdatensatz als solches hat keine Relevanz, nur die Spalten id1 und mindiff.
mindiff gibt dann die ermittelte kleinste Differenz an.

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de