MySQL 'IN' -Klausel und die Reihenfolge der zurückgegebenen Datensätze

7

Zum Beispiel: wähle * aus T wo T.id IN (4,78,12,45)

Ich möchte, dass der zurückgegebene Datensatz nach der Position in der IN-Klausel sortiert wird. Wie kann ich das tun?

    
lovespring 03.09.2009, 11:29
quelle

3 Antworten

20

Sie können es mit FIND_IN_SET machen, zB

%Vor%

Während Sie die Liste duplizieren müssen, ist das kein großes Problem, wenn Sie die Abfrage im Code generieren.

    
Paul Dixon 03.09.2009, 11:34
quelle
1

Im allgemeinen Fall können Sie nicht. SQL garantiert keine Reihenfolge, es sei denn, Sie verwenden die ORDER BY -Klausel, und sie kann nicht in den Inhalt einer IN -Anweisung eingebunden werden.

Wenn Sie jedoch eine temporäre Tabelle erstellen können, die die von Ihnen ausgewählten Werte anordnet, können Sie sich dieser Tabelle anschließen und danach sortieren.

Sie haben beispielsweise eine temporäre Tabelle, die etwa Folgendes enthält:

%Vor%

Dann kannst du es so bestellen:

%Vor%     
Welbog 03.09.2009 11:33
quelle
0

Sie können nicht nach der IN-Klausel sortieren. Sie müssen eine separate ORDER BY-Klausel angeben. Eine Möglichkeit, dies zu tun, besteht darin, eine Case-Anweisung in ORDER BY zu erstellen. Es ist jedoch nicht schön.

%Vor%     
Robin Day 03.09.2009 11:35
quelle

Tags und Links