Ist es möglich, eine beliebige Reihenfolge für eine MySQL SELECT
Aussage? Z.B.,
SELECT * FROM table_name WHERE id IN (1, 3, 2, 9, 7) ORDER BY (1, 3, 2, 9, 7);
Die Reihenfolge der Nummern, die direkt nach IN
scheinen keine Rolle zu spielen.
Ist es möglich, eine beliebige Reihenfolge für eine MySQL SELECT
Aussage? Z.B.,
SELECT * FROM table_name WHERE id IN (1, 3, 2, 9, 7) ORDER BY (1, 3, 2, 9, 7);
Die Reihenfolge der Nummern, die direkt nach IN
scheinen keine Rolle zu spielen.
Die Funktion FIND_IN_SET erfüllt diesen Zweck
SELECT * FROM table_name WHERE id IN (1, 3, 2, 9, 7) ORDER BY FIND_IN_SET(id, '1,3,2,9,7');
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set
EDIT: Beachten Sie das Fehlen von Leerzeichen im String-Argument der Funktion find_in_set.
Prüfen Sie mysql's ORDER BY FIELD . Ich denke, es wird genau das tun, was Sie wollen.
Einfache Antwort:
Instrumentieren Sie Ihre Daten mit einem anderen "ordnenden" int-Feld und ordnen Sie dann nach diesem Feld. Das sollte in den meisten Fällen genügen. Ich habe dies erfolgreich getan, wo Kunden bestimmte Produkte in einer Liste mit Sonderangeboten usw. aufsteigen lassen können, indem sie niedrige Werte wie -1 oder -99 in das Bestellfeld eingeben.
Komplexe Antwort:
Dies wäre der Fall, wenn Sie die Reihenfolge normalisieren wollten, und wenn Sie vielleicht ein anderes Feld als zweiten Faktor in der Reihenfolge hätten, das sich bereits in Ihrer Haupttabelle befindet. Dies wäre auch hilfreich, wenn Sie andere Informationen mit jedem Ordnungspunkt verknüpft haben, z. B. eine Notiz. Oder wenn viele Tabellen diese willkürliche Reihenfolge implementieren und Sie diese Reihenfolge von einer Stelle aus orchestrieren/ändern wollen.
Was Sie tun würden, ist die "willkürliche" Reihenfolge in einer Tabelle zu platzieren, die Sie verbinden können und dann nach diesem Feld zu ordnen:
SELECT t.*, o.ordering
FROM table_name AS t
LEFT JOIN table_name_ordering AS o ON t.ordering_id = o.id
ORDER BY o.ordering, t.other_field
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.