Я искал SO для ответа, но, похоже, мой конкретный случай немного отличается от остальных.
В основном мои данные состоят из некоторых "основных" записей с "позицией" (acts_as_listв RoR), а затем любое количество «настраиваемых» записей с настраиваемой_позицией, чтобы отразить основную позицию.Желаемым результатом является получение набора, содержащего мастер + пользовательские записи, упорядоченные по master1, custom1 ..., master2, custom2 ...,
Основные записи будут иметь значение NULL custom_position;пользовательские записи будут иметь настраиваемую_позицию, равную позиции их мастера.
исходные данные, не отсортированные:
name sort_a sort_b
==== ====== ======
Lorem 1 NULL
ipsum 2 NULL
dolor 3 NULL
Lorem foo 4 1
ipsum foo 5 2
dolor foo 6 3
Lorem bar 7 1
ipsum bar 8 2
dolor bar 9 3
Lorem duck 10 1
ipsum duck 11 2
dolor duck 12 3
требуемая сортировка:
name sort_a sort_b
==== ====== ======
Lorem 1 NULL
Lorem foo 4 1
Lorem bar 7 1
Lorem duck 10 1
ipsum 2 NULL
ipsum foo 5 2
ipsum bar 8 2
ipsum duck 11 2
dolor 3 NULL
dolor foo 6 3
dolor bar 9 3
dolor duck 12 3
ближе всего я получил: упорядочить по coalesce (sort_a, sort_b) asc
name sort_a sort_b
==== ====== ======
Lorem foo 4 1
Lorem bar 7 1
Lorem duck 10 1
Lorem 1 NULL
ipsum foo 5 2
ipsum bar 8 2
ipsum duck 11 2
ipsum 2 NULL
dolor foo 6 3
dolor bar 9 3
dolor duck 12 3
dolor 3 NULL
Любая идея, как мне добиться желаемой сортировки в ORDER BYпункт