Autor | Zpráva | ||
---|---|---|---|
Jmalkovic Profil * |
#1 · Zasláno: 20. 2. 2009, 17:48:40
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 |
#2 · Zasláno: 21. 2. 2009, 19:42:03 · Upravil/a: TomášK
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áš :) |
||
Časová prodleva: 15 let
|
0