Portál AbcLinuxu, 6. května 2025 22:46

Dotaz: mysql - vybrat hromadně nejnovější záznamy

10.10.2011 10:01 cx0
mysql - vybrat hromadně nejnovější záznamy
Přečteno: 307×
Odpovědět | Admin
Ahoj, mám několik GB velkou databázi a potřeboval bych vybrat unikátní záznamy, ale ty nejnovější. Nyní cyklím:

FROM gr WHERE kod=X ORDER BY id DESC LIMIT 1

.. což je náročné ..

chtěl bych takto:

FROM gr GROUP BY kod

.. jenže to nevybere ty nejnovější záznamy (tzn. vybrat unikátní řádky s kod, ale ty naposledy přidané, nejnovější (dle id)

a

FROM gr GROUP BY kod ORDER BY id DESC

nefunguje správně.

Díky.
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

10.10.2011 11:33 Petr
Rozbalit Rozbalit vše Re: mysql - vybrat hromadně nejnovější záznamy
Odpovědět | | Sbalit | Link | Blokovat | Admin
nevim proc tu je DB poradna, ale budiz :-) kdyz jde o unikatni zaznamy,jak sam pises, tak proc potom GROUP BY?
10.10.2011 11:45 cx0
Rozbalit Rozbalit vše Re: mysql - vybrat hromadně nejnovější záznamy
abych vybral unikátní záznamy dle toho kódu. Nebo jak, prosím?
10.10.2011 11:48 cx0
Rozbalit Rozbalit vše Re: mysql - vybrat hromadně nejnovější záznamy
konkrétně, v té tabulce jsou záznamy s např. "f8e0s" třeba 10x, s "f900q" třeba 30, s "f80e7" třeba jednou. A já potřebuju každý takovýto kód vybrat ale jen jeho nejnovější záznam (dle ID)
10.10.2011 12:38 Kit
Rozbalit Rozbalit vše Re: mysql - vybrat hromadně nejnovější záznamy
A to je takový problém je seřadit sestupně? Vím, že to není elegantní, ale je to funkční:
SELECT * FROM (SELECT * FROM tabulka ORDER BY id DESC) AS tab2 GROUP BY nazev ORDER BY id;
10.10.2011 12:48 cx0
Rozbalit Rozbalit vše Re: mysql - vybrat hromadně nejnovější záznamy
Tak zrovna tohle je šílený řešení v praxi kvůli výkonu nepoužitelný.
10.10.2011 13:47 Kit
Rozbalit Rozbalit vše Re: mysql - vybrat hromadně nejnovější záznamy
No dobrá. A co tohle?
SELECT * FROM (SELECT max(id) AS id FROM tabulka GROUP BY kod) AS tab2 JOIN tabulka USING(id);
10.10.2011 21:17 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: mysql - vybrat hromadně nejnovější záznamy
Odpovědět | | Sbalit | Link | Blokovat | Admin
FROM gr WHERE kod=X ORDER BY id DESC LIMIT 1

.. což je náročné ..
Nevidím důvod proč by to bylo náročné, máte index přes (kod, id desc) ?
In Ada the typical infinite loop would normally be terminated by detonation.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.