Jak seradit v PG 7.x

Korinek, Jan Jan.Korinek na hp.com
Úterý Prosinec 3 15:23:15 CET 2002


-----Original Message-----
From: otakarek na post.cz [mailto:otakarek na post.cz] 
Sent: Tuesday, December 03, 2002 2:25 PM
To: databases na linux.cz
Subject: Jak seradit v PG 7.x


*Mam dotaz napr.:
*SELECT * FROM xyz WHERE id IN (15,18,4,47,2)
*A potrebuji napsat ORDER BY tak, aby vysledky byly serazeny
*presne tak jak je v podmince SQL dotazu (tj. v poradi id
*15,18,4,47,2). Jedine co me napada je psani sloziteho:
*SELECT *,(CASE WHEN id=15 THEN 1 ELSE WHEN id=18 THEN 2 ELSE id=4
*THEN 3 ....) AS _sort_by FROM xyz WHERE id IN (15,18,4,47,2)
*ORDER BY _sort_by Za prve mi to prijde neefektivni a za druhe
*prijdu o index-seqscan.

V Oracle bych resil pres funkci decode v order klauzuli.
Neco jako ...
order by decode(id, 15, 1, 18, 2, 4, 3, 47, 4, 2, 5)

Honza


Další informace o konferenci Databases