Как сортировать записи в SQL как в родительском дочернем порядке - PullRequest
0 голосов
/ 03 мая 2018

У меня есть таблица со столбцами "ItemId" и "ParentItemId". Я хочу, чтобы результаты сортировались в порядке «Родитель-ребенок». с этим есть другие столбцы, по которым данные должны быть отсортированы. Я хочу, чтобы данные сортировались сначала по "itemType".

Например,

 AutoId | itemId | parentItemId | itemType
   1        1       0               3
   2        2       null            4
   3        3       0               6
   4        4       null            5
   5        5        1              9
   6        6        2              9
   7        7        3              9
   8        8        4              9
   9        9        0              2
   10       10       0              1

Теперь я хочу, чтобы результаты отображались в следующем формате

 AutoId | itemId | parentItemId | itemType
   10       10        0              1
   9        9         0              2
   1        1         0              3
   5        5         1              9
   2        2        null            4
   6        6         2              9
   4        4        null            5
   8        8         4              9
   3        3         0              6 
   7        7         3              9

Можно ли как-то отсортировать записи?

Любая помощь будет оценена. Спасибо.

Ответы [ 3 ]

0 голосов
/ 03 мая 2018

Вы можете сделать это:

select *
from table1
order by coalesce(parentitemid,itemid), itemid

Пример: http://sqlfiddle.com/#!9/32e58e/2

0 голосов
/ 03 мая 2018

Взято из @hkutluay ответа для SQL Server:

select * from table1 order by ISNULL(parentItemID, ItemID), ItemID

0 голосов
/ 03 мая 2018

Для MySql используйте ifnull для поля parentItemId Как

select *
from table
order by IFNULL(parentItemId, itemId), itemId

для оракула

select *
from table
order by NVL(parentItemId, itemId), itemId
...