Cristoph Müller: SQL: freies sortieren

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?

  1. 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

  2. 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

  3. 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

  4. Hi!

    SELECT * from tabelle1 WHERE id IN (2,7,4,1) ORDER BY RAND()

    MfGOlli