Mam nadzieję, że posortuję elementy zwrócone w poniższym zapytaniu według kolejności, w jakiej zostały wprowadzone do funkcji IN () .
WEJŚCIE:
SELECT id, name FROM mytable WHERE name IN ('B', 'A', 'D', 'E', 'C');
WYNIK:
| id | name |
^--------^---------^
| 5 | B |
| 6 | B |
| 1 | D |
| 15 | E |
| 17 | E |
| 9 | C |
| 18 | C |
Jakieś pomysły?
FIELD(letter, 'A', 'C')
. Lista najpierw zwróci wpisy z literą B jako pierwszą (przy założeniu zestawu rekordów zA | B | C
wartościami). Aby tego uniknąć, odwróć listę i użyj DESC, tjFIELD(letter, 'C', 'A') DESC
.Inna opcja stąd: http://dev.mysql.com/doc/refman/5.0/en/sorting-rows.html
Więc w twoim przypadku (niesprawdzone) byłoby
W zależności od tego, co robisz, uznałem to za trochę dziwaczne, ale zawsze działało po odrobinie zabawy.
źródło
Spróbuj czegoś takiego
źródło
Może to może komuś pomóc (p_CustomerId jest przekazywany w SP):
Opis: Chcę pokazać listę kont. Tutaj przekazuję identyfikator klienta w sp. Teraz wyświetli listę nazw rachunków z kontami połączonymi z tymi klientami, które są wyświetlane u góry, a następnie inne konta w kolejności alfabetycznej.
źródło
Potrzebujesz kolejnej kolumny (numerycznej) w swojej tabeli, w której określisz porządek sortowania. Klauzula IN nie działa w ten sposób.
źródło
po prostu użyj
unikaj takiej sytuacji
zakończy się nieuporządkowanym wierszem wyniku: alternatywa 1 i 11
źródło