#sql #sql-order-by
#sql #sql-order-by
Вопрос:
У меня есть набор результатов, который выглядит следующим образом в таблице var (извините за плохое форматирование):
RootID | RootName | ChildId | ChildName
1 | Bob | null | null
1 | null | 4 | Tim
1 | null | 6 | Cindy
2 | Alice | null | null
2 | null | 7 | Joe
2 | null | 9 | Jack
3 | Frank | null | null
3 | null | 17 | ken
Что я хотел бы сделать, так это упорядочить их по корневому имени ASC, а затем по дочернему имени ASC, чтобы получить их в алфавитном порядке. Есть предложения? Заранее спасибо
Комментарии:
1. Не уверен, что я понимаю вопрос. Вы пытаетесь сделать что-то большее, чем то, что
ORDER BY RootName, ChildName
дало бы вам?2. С какой проблемой вы столкнулись? Вы хотите, чтобы нули отображались в определенном порядке?
3. если я использую порядок по корневому имени, имени дочернего элемента, я в конечном итоге теряю родительскую дочернюю структуру. все корневые имена сгруппированы, и все дочерние имена сгруппированы. Я хотел бы сначала упорядочить столбец rootname в алфавитном порядке, сохранив все строки с одним и тем же корневым идентификатором вместе, затем упорядочить дочернее имя в алфавитном порядке, сохранив корневой идентификатор вместе. или, по крайней мере, отсортируйте корневое имя по порядку альфа
4. Я думаю, что это скорее проблема выбора / объединения, чем упорядочения. Почему у этих строк есть идентификатор root, но нет имени root?
5. Я думаю, что я пытаюсь сделать слишком много вещей одновременно, спасибо, ребята
Ответ №1:
Если это работает для вашего приложения, я бы переписал запрос, чтобы избавиться от nulls. Я не могу не думать, что
RootID | RootName | ChildId | ChildName
1 | Bob | 4 | Tim
1 | Bob | 6 | Cindy
2 | Alice | null | Joe
2 | Alice | 4 | Jack
3 | Frank | 7 | ken
С этим было бы проще работать. (Ну, это NULL для Alice / Joe — это опечатка, верно?)
Ответ №2:
Эмм… Как насчет этого?
select * from yourtable order by RootName ASC, ChildName ASC
Вы можете использовать NULLS LAST
и NULLS FIRST
(по крайней мере, в Oracle) для управления тем, куда должны быть помещены нули при сортировке.
Комментарии:
1. В большинстве продуктов других поставщиков также есть «разновидности» NULLS LAST и NULLS FIRST.
2. Я так и думал, вот почему я упомянул об этом.
Ответ №3:
select rec_id,gr_id from jegad order by 1 desc
select isnull(rec_id,'-'),isnull(gr_id,'-') from jegad order by 1 desc
ПОРЯДОК По РЕГИСТРУ, КОГДА Col равен NULL, Тогда 1 Еще 0 заканчивается, Col