Как реализовать порядок с помощью строки, содержащей алфавит и номер - PullRequest
0 голосов
/ 26 апреля 2019

Имя таблицы: itemmaster

У меня есть данные ниже

ItemDesc  ParentID
--------  --------
1005      1
A-105     1
A-106     1
A-101     1
1001      1
B-105     2
B-106     2
B-101     2
101       2

и я хочу заказать и получить результат как

ItemDesc
--------
A-101
A-105
A-106
1001
1005
B-101
B-105
B-106
101

Я пытаюсь с

  ORDER BY  `itemmaster`.`ParentItemId` ASC

так что запрос запроса по указанному выше коду

Ответы [ 2 ]

1 голос
/ 26 апреля 2019

Попробуйте этот запрос. Это работает нормально с моей стороны.

SELECT `ItemDesc` FROM `table1` ORDER BY `ParentID` ASC, `ItemDesc` * 1, `ItemDesc` ASC 

Выход:

ItemDesc
A-101
A-105
A-106
1001
1005
B-101
B-105
B-106
101
0 голосов
/ 26 апреля 2019

Похоже, что вы хотите заказать в 3 различных шага:

  1. Сначала ParentID;
  2. Затем вы хотите текстовые поля перед номерами ItemDesc field;
  3. Затем вы хотите, чтобы значения ItemDesc были в алфавитном / числовом порядке возрастания.

В порядке, который будет выглядеть примерно так:

ORDER BY
    `ParentID`,
    IF(`ItemDesc` REGEXP '^[0-9]+$', 1, 0),    # If numerical then 1 as that comes after 0
    `ItemDesc`

Ascending ASC является значением по умолчанию, поэтому я оставил это значение для всех 3.

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