Sortierungsproblem

Habe folgenden Select:
select id,col1,col2,col3 from table1 where id in (45,23,1,234,22,210);

Im Ergebnis möchte ich, dass die Rows entsprechend der Reihenfolge wie sie in der Mengenangabe kommen, sortiert haben, also:
id col1 col2 col3
45 text1 text2 text3
23 text1 text2 text4
usw.

Oracle sortiert ohne „Order By - Clause“ implizit nach der ROWID.

Gibt es eine Lösung hierfür?
Einziger Ausweg 6 einzelne selects mit jew. 1 Row als Ausgabe, das ist aber nicht sehr effektiv.

Gruß, Denis

Hi Denis,

Oracle kenne ich nicht so genau, aber in vielen anderen Datanbanksystemen kann nach der Column- Nummer sortiert werden, in deinem Beispiel also

select id,col1,col2,col3
from table1
where id in (45,23,1,234,22,210)

order by 1;

Gruß Ralf

Diese Sortierung bringt aber nicht das gewünschte Ergebnis.
Es würde nach dem Feld „id“ sortieren (also 1,2,3,4 usw.), aber genau das will ich ja nicht.
Ich möchte genau so sortiert haben, wie es in der Mengenangabe (Klammer) angegeben ist.

hi!

die einzige möglichkeit dafür (die mir auf die schnelle einfällt - vor einem ähnlichem sortierungsproblem stand ich auch mal) ist mittels decode (allerdings mußt du dafür natürlich die id’s wissen):

select
id,
col1,
col2,
col3,
decode(id,45,1,23,2,234,3,22,4,210,5,999) sortierung
from table1
where id in (45,23,1,234,22,210)
order by sortierung;

eventuell mit einem „order by rownum“ …

grüße,
tomh

Wahrlich nicht.
Das ist allerdings auch keine Sortierung, was du da haben willst, sondern eine Reihung. Wäre das nicht eine Geschäftsidee, eine Datenbanksprache zu entwickeln mit dem main feature „Tue, was ich denke!“?

Denis, du kriegst aus einer Datenbank nicht mehr raus als das, was drinsteckt. Und diese Reihenfolge steckt eben nicht in der Datenbank, sondern in deinem Kopf.

Gruß Ralf

Perfekt, das ist genau das, was ich suche.
SQL läßt eben keine Wünsche offen.

Vielen Dank.
Gruß, Denis

select
id,
col1,
col2,
col3,
decode(id,45,1,23,2,234,3,22,4,210,5,999) sortierung
from table1
where id in (45,23,1,234,22,210)
order by sortierung;