Portál AbcLinuxu, 20. dubna 2024 00:47


Dotaz: select distinct u TSQL

20.7.2009 22:10 MB
select distinct u TSQL
Přečteno: 576×
Odpovědět | Admin

 

Dobry den.

Mam tabulku nasledovne:

=========================

prvni druhy

10      GG
40      TT
40      RR
20      AA
20      EE
10      JJ
40      ZZ
10      HH
20      DD
20      BB
 

Jestlize zadam:

select prvni from tabulka order by druhy

pak dostanu tohle:

|   20 |
|   20 |
|   20 |
|   20 |
|   10 |
|   10 |
|   10 |
|   40 |
|   40 |
|   40 |

Ale ja bych chtel tyhle cisla prave jednou, tedy takhle:

|   20 |
|   10 |
|   40 |
 

Ale bohuzel u TSQL pouhe pridani "distinct" do selectu neponechava poradi tech cisel (vypise napr. 40, 20, 10)... V MySQL jsem to ted vyzkousel, tam jsem dostal vysledek, ktery jsem ocekaval, nicmene, nevim, zda to musi fungovat vzdy. Jak tento problem vyresit spravne?  Distinct by mel ponechat poradi, co vytvoril "order by"?


Dekuji.

 

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

Odpovědi

okbob avatar 21.7.2009 08:38 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
Rozbalit Rozbalit vše Re: select distinct u TSQL
Odpovědět | | Sbalit | Link | Blokovat | Admin

Distinct nezaručuje pořadí - k tomu slouží výhradně ORDER BY. To, že provede v MySQL zároveň order by, je jen vedlejší efekt implementace. Kromě setřídění a vyházení duplicit ještě existuje další způsob založený na hash tabulkách. Tento způsob je (pro většinu dat) řádově rychlejší a už z principu nevede k seřazení dat.

21.7.2009 21:41 kaaja | skóre: 24 | blog: Sem tam něco | Podbořany, Praha
Rozbalit Rozbalit vše Re: select distinct u TSQL
Odpovědět | | Sbalit | Link | Blokovat | Admin

To,  že se sešla stejná čísla za sebou je náhoda (nebo druhý sloupeček nějak souvisí s prvním). Mohlo by se přeci stát, že by byla na přeskáčku. Jak by se pak měla čísla při seskupení seřadit? Možná by mohlo fungovat něco jako

select prvni from tabulka group by prvni order by min(druhy)

 

default avatar 22.7.2009 22:10 default | skóre: 22 | Madrid
Rozbalit Rozbalit vše Re: select distinct u TSQL
Příloha:
select prvni from tabulka group by prvni order by min(druhy)

Ano, na SyBase ASE 15 to funguje. :-D

23.7.2009 10:27 kaaja | skóre: 24 | blog: Sem tam něco | Podbořany, Praha
Rozbalit Rozbalit vše Re: select distinct u TSQL

Díky za skript, ušetřilo mi to praci při testování na MSSQ2005 a taky to funguje.

default avatar 23.7.2009 10:48 default | skóre: 22 | Madrid
Rozbalit Rozbalit vše Re: select distinct u TSQL

Nemáš vůbec zač.

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.