Autor Zpráva
Jmalkovic
Profil *
Dobrý den, existuje v MySql něco jako lokální Group By? Ukážu to na příkladě. Toto je výsledek mojeho selectu:
A
B
B
B
A
A
B
C
C
A
A
A
C
C
C
C


A potřeboval bych, aby se mi jednotlivé řádky zgrupovaly (ideálně aby zůstalo to s nejnovějším datem):
A
B
A
B
C
A
C


Klasický Group By to sloučí globálně pro věechny řádky...
TomášK
Profil
Za následující řešení bych ruku do ohně nedal, ale můžež vyzkoušet, jestli by to nešlo použít. Myšlenka je ta, že si záznamy rozřadím do skupin a pak to GROUPuju podle skupiny:
A 0
B 1
B 1
B 1
A 2
A 2
...

SET @skupina := 0;
SET @pismeno := 'A';

SELECT 
 pismeno, 
 MAX(datum)
FROM (
 SELECT 
   @skupina := @skupina + (pismeno = @pismeno) AS skupina,
   @pismeno := pismeno AS pismeno
 FROM t
 ) AS t1

GROUP BY skupina


V kódu využívám, že podmínka (pismeno = @pismeno) vrátí buď 0 nebo 1. Ruku do ohně bych za to nedal, protože nevím, jestli mám zaručeno v jakém pořadí se dosadí do proměnných, potřebuju, aby se řádky
   @skupina := @skupina + (pismeno = @pismeno) AS skupina,
   @pismeno := pismeno AS pismeno

vyhodnotily v pořadí v jakém jsem je napsal. Za vyzkoušení nic nedáš :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0