Я надеюсь отсортировать элементы, возвращаемые в следующем запросе, по порядку их ввода в функцию IN () .
ВХОД:
SELECT id, name FROM mytable WHERE name IN ('B', 'A', 'D', 'E', 'C');
ВЫВОД:
| id | name |
^--------^---------^
| 5 | B |
| 6 | B |
| 1 | D |
| 15 | E |
| 17 | E |
| 9 | C |
| 18 | C |
Любые идеи?
FIELD(letter, 'A', 'C')
Список сначала будет возвращать записи с буквой B (при условии, что набор записей соA | B | C
значениями). Чтобы избежать этого, инвертировать список и использовать DESC, то естьFIELD(letter, 'C', 'A') DESC
.Другой вариант отсюда: http://dev.mysql.com/doc/refman/5.0/en/sorting-rows.html
Итак, в вашем случае (непроверенный) будет
В зависимости от того, что вы делаете, я нахожу это немного странным, но всегда заставлял его работать после того, как немного поигрался с ним.
источник
Попробуйте что-нибудь вроде
источник
Может быть, это кому-то поможет (p_CustomerId передается в SP):
Описание: Я хочу показать список аккаунтов. Здесь я передаю идентификатор клиента в sp. Теперь он будет перечислять имена учетных записей с учетными записями, связанными с которыми клиенты показаны вверху, за которыми следуют другие учетные записи в алфавитном порядке.
источник
Вам нужен другой столбец (числовой) в вашей таблице, в котором вы указываете порядок сортировки. Предложение IN таким образом не работает.
источник
просто используйте
Избегайте такой ситуации, как
закончится неупорядоченной строкой результата: 1 и 11 альтернант
источник