У меня есть список с фильтрами сортировки. В зависимости от параметра я хочу, чтобы избранное с этим параметром отображалось сверху, сохраняя при этом их сортировку по имени (если оно имеет одно и то же значение):
Пример 1: заказ от А до Я
Пример 2: Заказ из последнего счета
Я пытался
`ORDER BY
favorite ${sortDirection}, name ${sortDirection}`
также
`ORDER BY
favorite DESC,
CASE WHEN favorite = 1 THEN ${orderBy} END ${sortDirection},
CASE WHEN favorite = 1 THEN name END ASC,
CASE WHEN favorite = 0 THEN ${orderBy} END ${sortDirection},
CASE WHEN favorite = 0 THEN name END ASC
`;
${sortDirection} может быть ASC или DESC. Но в этом случае избранное отображается от true до false, и они не сортируются по имени от А до Я, а имеют тот же порядок, что и в строках базы данных.
Я предлагаю вам включить примеры данных.
Предоставьте полный минимально воспроизводимый пример , то есть как данные таблицы образца, так и ожидаемый результат.


Для первого примера, я думаю, вам нужно что-то вроде:
SELECT *
FROM yourTable
ORDER BY
favorite DESC, -- favorite = 1 sorts first, favorite = 0 second
name; -- then sort each sub group by name
Во втором редактировании избранное не сортируется по имени, а просто отображается в том порядке, в котором они есть в базе данных.
@Filippo Таблицы не имеют внутреннего порядка. Если у вас нет столбца для заказа, вы не сможете этого сделать.
Как насчет того, чтобы
ORDER BY favorite DESC, ${orderBy} ${sortDirection}предположить, чтоorderByсодержит столбец, который вы хотите отсортировать после сортировки по избранному?