Gast: WHERE id IN (4,2,3,1) - Reihenfolge

Hallo,

ich möchte aus der Datenbank bestimmte Sätze haben, deren IDs mir vorliegen.

Allerdings ist die Reihenfolge der Ergebnisse nicht in der Reihenfolge der IDs. Gibt es da einen Zusatz, der das Ergebnis in genau dieser Reihenfolge liefert?

Gast

  1. Tach!

    Allerdings ist die Reihenfolge der Ergebnisse nicht in der Reihenfolge der IDs. Gibt es da einen Zusatz, der das Ergebnis in genau dieser Reihenfolge liefert?

    Eine garantierte Reihenfolge gibt es nur mit ORDER BY. In deinem Fall kann dir die Funktion FIELD() helfen - zumindest, wenn du MySQL verwendest.

    dedlfix.

    1. Eine garantierte Reihenfolge gibt es nur mit ORDER BY. In deinem Fall kann dir die Funktion FIELD() helfen - zumindest, wenn du MySQL verwendest.

      In diesem Fall ist vermutlich eher FIND_IN_SET() für die Sortierung interessant - es geht ja um die Position eines Elements in der Liste (dieselbe die per IN() bereits bekannt ist) und nicht um die Position eines Zeichens in einer Zeichenkette. FIND_IN_SET steht in der Dokumentation direkt unter FIELD()

      1. Tach!

        In deinem Fall kann dir die Funktion FIELD() helfen - zumindest, wenn du MySQL verwendest.

        In diesem Fall ist vermutlich eher FIND_IN_SET() für die Sortierung interessant - es geht ja um die Position eines Elements in der Liste (dieselbe die per IN() bereits bekannt ist) und nicht um die Position eines Zeichens in einer Zeichenkette. FIND_IN_SET steht in der Dokumentation direkt unter FIELD()

        Auch FIELD() findet eine Position in einer Liste. Substrings im String finden INSTR() und LOCATE().

        FIELD() erwartet eine Liste mit Einzelwerten, FIND_IN_SET() möchte einen String mit kommaseparierten Werten durchsuchen.

        dedlfix.

        1. Auch FIELD() findet eine Position in einer Liste. Substrings im String finden INSTR() und LOCATE().

          FIELD() erwartet eine Liste mit Einzelwerten, FIND_IN_SET() möchte einen String mit kommaseparierten Werten durchsuchen.

          Du hast recht, hatte grade einen Denkfehler :)