SQL: freies sortieren
Cristoph Müller
- datenbank
Hi,
Ich suche zur Zeit nach einer Möglichkeit die Zeilen eines SELECT statements in beiebiger Reihenfolge zurückzugeben.
Ich habe
SELECT * from tabelle1 WHERE id IN (2,7,4,1)
Und bräuchte diese Werte dann auch genau in der Reihenfolge die in der Klammer steht. Giebt es da eine Möglichkeit ohne für jeden Eintrag ein eigenes zeitaufwendiges SQL-Komando zu benutzen
Hab schon danach gesucht aber nichts gefunden.
Wenn das hier nicht das richtige Forum für sowas ist, gibts dann ein anderes gutes?
Hi,
Ich suche zur Zeit nach einer Möglichkeit die Zeilen eines SELECT
statements in beiebiger Reihenfolge zurückzugeben.
Es gibt keine.
Gruss,
Christian
http://wwwtech.de
Hi auch,
Ich suche zur Zeit nach einer Möglichkeit die Zeilen eines SELECT statements in beiebiger Reihenfolge zurückzugeben.
Ich habe
SELECT * from tabelle1 WHERE id IN (2,7,4,1)
Und bräuchte diese Werte dann auch genau in der Reihenfolge die in der Klammer steht.
*Wo* brauchst Du diese Werte in dieser Reihenfolge?
a) Innerhalb der Datenbank (SQL)?
Dann ist Deine Anforderung widersinnig, denn das Ergebnis Deiner Query
ist dort eine Menge, und die hat keine "Reihenfolge".
b) Außerhalb der Datenbank (3GL-Programmiersprache)?
Dann kannst Du die Sortiernung in Deinem Anwendungsprogramm vornehmen.
(Datensätze aus dem Cursor lesen und vier sequentielle Listen aufbauen.)
Viele Grüße
Michael
Hi,
SELECT * from tabelle1 WHERE id IN (2,7,4,1)
Und bräuchte diese Werte dann auch genau in der Reihenfolge die in der Klammer steht.
...WHERE id IN (1,4,7,2)
Zumindest bei Oracle wird, meiner Erfahrung nach, und sofern das Statement nicht komplexer wird, die Reihenfolge genau umgekehrt ausgegeben.
Allgemein gilt aber natürlich: Sofern Du keine ORDER BY-Clause angibst, purzeln die Daten unsortiert raus. Du kannst Dir aber mit ORDER BY decode(id, 2,1, 4,2, 7,3, 1,4) behelfen, wenn Dein DBMS diese Funktion beherrscht.
Cheatah
Hi!
SELECT * from tabelle1 WHERE id IN (2,7,4,1) ORDER BY RAND()
MfGOlli