Я хочу выполнить запрос, который сначала упорядочит мне таблицу по полю приоритета, а затем в алфавитном порядке, например:
SELECT * FROM tipos where prioridad between 1 and 5 order by prioridad
Этот запрос возвращает 2 результата, отсортированных в порядке возрастания,
SELECT * FROM tipos WHERE prioridad is null ORDER BY nombre
И этот должен возвращать остальные, упорядочивая их по имени
Теперь я хочу получить результаты как в том же запросе, так и в этом порядке, но присоединившись к ним:
(SELECT * FROM tipos where prioridad between 1 and 5 order by prioridad ) union
(SELECT * FROM tipos where prioridad is null order by nombre)
возвращает следующее:
ORDER
всегда он применяется в конце любой консультации, в твоем случае, ты это применяешь в субконсультациях, но не после union
а следовательно ты не можешь ждать ningГєn команду в особенности. Она soluciГіn так, что ты не касаешься cГіdigo serГ - во что-то asГ-:
SELECT *
FROM (
SELECT * FROM tipos where prioridad between 1 and 5
union
SELECT * FROM tipos where prioridad is null
) T
ORDER BY case when prioridad is not null then 1 else 2 end,
prioridad, nombre
Прием, чтобы отделять две группы, состоит в том, чтобы использовать case when prioridad is not null then 1 else 2 end
, давайте думать аргумент команды формы dinГЎmica, помещая вперед случаи dГіnde prioridad
нет NULL
, потом порядок, serГЎ prioridad
и nombre
. Со второй группой, в существо prioridad
всегда NULL
определяющий порядок serГЎ nombre
.
Замечает: С другой стороны, твоя консультация может быть упрощенной много, проверяет ответ Мигеля по этому поводу.
Унифицируй твои консультации в одной, с двумя условиями, так как они на той же таблице. Консультация quedarГ - в asГ-:
SELECT *
FROM tipos
WHERE prioridad between 1 and 5
OR prioridad is null
ORDER BY prioridad, nombre
Таким образом сначала мы выдаем первенство со стоимостью, которая интересует нас, и despuГ©s из-за недействительной стоимости. В continuaciГіn мы упорядочиваем сначала из-за первенства и despuГ©s по имени.
В подсказку LPZadkiel, в ней ordenaciГіn показывать, что возможно упорядочивать восходящий (по умолчанию, ASC
) или нисходящий (DESC
). Даже упорядочивать из-за каждого поля различного способа. Например:
SELECT *
FROM tipos
WHERE prioridad between 1 and 5
OR prioridad is null
ORDER BY prioridad DESC, nombre ASC
, Если ты только хочешь показать одну condiciГіn распоряжения, всегда должен идти она Гєltima и ordenarГ - во все поля таким образом:
SELECT *
FROM tipos
WHERE prioridad between 1 and 5
OR prioridad is null
ORDER BY prioridad, nombre DESC
типов Привета!
SELECT * from tipos ORDER BY case when prioridad is not null then 1 else 2 end, prioridad, nombre
, в действительности я был очень полезным case, вот то, что он искал. – Charls 02.12.2019, 18:05