Portál AbcLinuxu, 14. května 2025 04:50

Dotaz: Select * from table order by cislo limit1 - Víceciferná čísla

26.2.2010 18:13 Saky
Select * from table order by cislo limit1 - Víceciferná čísla
Přečteno: 583×
Odpovědět | Admin
Zdravím, mám tabulku, která obsahuje sloupec čísel nabývající hodnot 0-99999999. Potřebuji dotazem vypsat nejvyšší číslo ve sloupci. Potíž je, že dotaz
SELECT * FROM tabulka ORDER by celkem DESC LIMIT 1
mi vrátí nejvyšší jednocifené číslo, třeba "8". Lze lépe položeným dotazem zjistit opravdu nejvyšší číslo, třeba 12880? Díky za rady :-)

Řešení dotazu:


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

Odpovědi

26.2.2010 18:23 Saky
Rozbalit Rozbalit vše Re: Select * from table order by cislo limit1 - Víceciferná čísla
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pardon, vyřešeno. Špatný typ sloupce :-)
26.2.2010 20:04 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Select * from table order by cislo limit1 - Víceciferná čísla
Odpovědět | | Sbalit | Link | Blokovat | Admin

Jaká je výhoda takového dotazu proti starému dobrému

  select max(CELKEM) from TABULKA

?

26.2.2010 21:09 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Select * from table order by cislo limit1 - Víceciferná čísla
Pokud nestačí jen samotná hodnota toho čísla, ale potřebujete znát i další informace z příslušného řádku (třeba ID apod.) – třeba když vás nezajímá jen jaká je největší plat, ale taky kdo tolik bere. Fakt je, že tazatel psal pouze o největší hodnotě, v SELECTu pak ale má hvězdičku. No a některé databáze také měly chybu v optimalizaci, takže ORDER BY … LIMIT 1 bylo daleko rychlejší, než SELECT MAX().
1.3.2010 09:18 Robo
Rozbalit Rozbalit vše Re: Select * from table order by cislo limit1 - Víceciferná čísla
to, co pisete sa da vyriesit GROUP BY; inak v niektorych databazach (napr. Oracle) metoda ORDER BY ... LIMIT 1 (v ORACLE ROWNUM < 2) takto nefunguje
Dalibor Smolík avatar 4.3.2010 19:00 Dalibor Smolík | skóre: 54 | blog: Postrehy_ze_zivota | 50°5'31.93"N,14°19'35.51"E
Rozbalit Rozbalit vše Re: Select * from table order by cislo limit1 - Víceciferná čísla
Já bych to řešil v mysql takto
select id, vyrobek from tabulka where id in (select max(id) from tabulka)
Rozdíly v řeči a ve zvyklostech neznamenají vůbec nic, budeme-li mít stejné cíle a otevřená srdce.
Gilhad avatar 2.3.2010 03:59 Gilhad | skóre: 20 | blog: gilhadoviny
Rozbalit Rozbalit vše Re: Select * from table order by cislo limit1 - Víceciferná čísla
dalsi vyhoda je, pokud potrebujes vice radku (3 nejvyssi platy), nebo dokonce vice radku z jineho mista nez zezhora (90.-100. radek treba = 10. stranka vypisu)
2.3.2010 10:22 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Select * from table order by cislo limit1 - Víceciferná čísla
To je mi samozřejmě jasné. Jen mne prostě zarazilo, proč si někdo na získání maximální hodnoty jednoho sloupce fetchuje celý řádek a ještě ke všemu takhle nešťastně. Pokud totiž na tom sloupci nebude index a databáze nebude mít opravdu prozíravý optimalizátor, bude časová i paměťová náročnost takového řešení podstatně větší než u toho přirozeného.

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.