Leider kann
MySQL eine temporäre Tabelle nur einmal in einer Abfrage verwenden.
@alzaimar: Ist cnt jetzt tage?
SQL-Code:
select distinct id, tage
from (select id, wert, datediff(min(Datum), max(Datum)) AS tage
from tabelle1
group by id, wert) x
where x.tage = (select max(tage)
from (select id, wert, datediff(min(Datum), max(Datum)) AS tage
from tabelle1
group by id, wert) y
where y.id = x.id)
order by 1
Zitat von
alzaimar:
...Noch was: Temporäre Tabellen wirken oft Wunder, speziell, wenn sie -wie hier- eine
Query stark vereinfachen, die sonst eine komplexe Subquery mehrmals ausführen würde.
Ich danke dir für diesen mutigen Hinweis, ich verwende diesen Denkansatz auch häufiger und bin immer wieder positiv überrascht. Für solche Aussagen wird man hier ja auch häufiger mal gesteinigt. Aber wer es nicht glauben will, dem ist eben nicht mehr zu helfen.
MSSQL ist in dieser Hinsicht einfach performanter und flexibler. Leider ist
MySQL hier etwas hinterweltlich.
Zitat von
alzaimar:
...Ich erwarte im Übrigen eine Abarbeitungszeit (wenn der Index auf ID+Wert gesetzt ist) von unter einer Sekunde, falls die
Query syntaktisch korrekt ist.
In
MsSQL ja, in
MySQL wäre ich mit solcher Aussage vorsichtig. Da dauert eine Abfrage, die
MSSQL in 0 Sekunden erledigt, eventuell schonmal einige Minuten.