sql ORDER BY несколько значений в конкретный порядок?

Хорошо, у меня есть таблица с индексированным ключом и неиндексированным полем. Мне нужно найти все записи с определенным значением и вернуть строку. Я хотел бы знать, могу ли я упорядочить по нескольким значениям.

Пример:

id     x_field
--     -----
123    a
124    a
125    a
126    b
127    f
128    b
129    a
130    x
131    x
132    b
133    p
134    p
135    i

псевдо: хотел бы, чтобы результаты были упорядочены следующим образом, где ORDER BY x_field = 'f', 'p', ' i ',' a '

SELECT *
FROM table
WHERE id NOT IN (126)
ORDER BY x_field 'f', 'p', 'i', 'a'

Итак, результаты будут такими:

id     x_field
--     -----
127    f
133    p
134    p
135    i
123    a
124    a
125    a
129    a

Синтаксис действителен, но когда я выполняю запрос, он никогда не возвращает никаких результатов, даже если я ограничиваю его одной записью. Есть ли другой способ сделать это?

Думайте о x_field как о результатах теста, и мне нужно проверить все записи, попадающие в это условие. Я хотел упорядочить результаты тестов по ошибочным значениям, пройденным значениям. Поэтому я мог сначала проверить ошибочные значения, а затем переданные значения, используя ORDER BY.

Что я не могу сделать:

  • GROUP BY, так как мне нужно вернуть конкретные значения записи
  • WHERE x_field IN ( 'f', 'p', 'i', 'a'), мне нужны все значения, поскольку я пытаюсь использовать один запрос для нескольких проверочных тестов. И значения x_field не в порядке DESC / ASC

После написания этого вопроса я начинаю думать, что мне нужно переосмыслить это, LOL!

78
задан Vivek S. 17 November 2015 в 09:27
поделиться