Сортировать таблицу по полю c_criticality в запросе sql - PullRequest
0 голосов
/ 26 сентября 2019

у меня есть одно поле wonum, C_criticality в рабочем порядке.

В поле C_criticality есть три варианта

  1. критические
  2. некритические
  3. tools 4.null или empty

В этом поле C_criticality некоторые столбцы являются нулевыми (пустыми), которые должны появиться в конце.Теперь мне нужно получить выходные данные в порядке сортировки по критичности, некритическое значение, инструмент, пустое значение (пустое значение).

CREATE TABLE workorder (wonum int, C_criticality varchar (255),);

INSERT INTO workorder (wonum, C_criticality) VALUES (2, «критический»);INSERT INTO workorder (wonum, C_criticality) VALUES (1, «некритический»);INSERT INTO workorder (wonum, C_criticality) VALUES (15, «критический»);INSERT INTO workorder (wonum, C_criticality) VALUES (12, «инструмент»);INSERT INTO workorder (wonum, C_criticality) VALUES (21, «некритический»);INSERT INTO workorder (wonum, C_criticality) VALUES (11, '');

вывод: -

 C_criticality           wonum
   critical                2
   critical                15
  non-critical             21
   tool                    12
   null                   11

Ответы [ 4 ]

2 голосов
/ 26 сентября 2019

Это работает для всех движков SQL, а не только в MySQL

select *
from workorder
order by case when C_criticality = 'critical' then 1
              when C_criticality = 'non-critical' then 2
              when C_criticality = 'tools' then 3
              else 4
         end
2 голосов
/ 26 сентября 2019

Мы можем попробовать двухуровневую сортировку, используя ISNULL и FIELD:

SELECT *
FROM yourTable
ORDER BY
    ISNULL(C_criticality),   -- 0 for non NULL, 1 for NULL
    FIELD(C_criticality, 'criticality', 'noncritical', 'tool');

Звонок на FIELD будет упорядочен согласно предоставленному вами списку.

1 голос
/ 26 сентября 2019

Поскольку вы пометили mysql , запрос будет выглядеть примерно так:

SELECT * FROM workorder ORDER BY FIELD(C_criticality ,'critical','non-critical','tools','null');
0 голосов
/ 26 сентября 2019

Это зависит от СУБД.В некоторых есть варианты NULLS FIRST, NULLS LAST В MySQL вы можете найти эту статью интересной https://www.designcise.com/web/tutorial/how-to-order-null-values-first-or-last-in-mysql

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...