SQL-сортировка по имени с избранным сверху

У меня есть список с фильтрами сортировки. В зависимости от параметра я хочу, чтобы избранное с этим параметром отображалось сверху, сохраняя при этом их сортировку по имени (если оно имеет одно и то же значение):

Пример 1: заказ от А до Я

  1. Алисса(*)
  2. Откровенный(*)
  3. Джессика(*)
  4. Анна
  5. Боб
  6. Джек
  7. Зак

Пример 2: Заказ из последнего счета

  1. Джессика(*) /2024
  2. Алисса(*) /2023
  3. Фрэнк(*) /2021 г.
  4. Джек /2024
  5. Зак /2024
  6. Анна /2023
  7. Боб /2023

Я пытался

    `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, и они не сортируются по имени от А до Я, а имеют тот же порядок, что и в строках базы данных.

Как насчет того, чтобы ORDER BY favorite DESC, ${orderBy} ${sortDirection} предположить, что orderBy содержит столбец, который вы хотите отсортировать после сортировки по избранному?

Dogbert 19.06.2024 10:06

Я предлагаю вам включить примеры данных.

Tim Biegeleisen 19.06.2024 10:14

Предоставьте полный минимально воспроизводимый пример , то есть как данные таблицы образца, так и ожидаемый результат.

jarlh 19.06.2024 10:22
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
3
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Для первого примера, я думаю, вам нужно что-то вроде:

SELECT *
FROM yourTable
ORDER BY
    favorite DESC,   -- favorite = 1 sorts first, favorite = 0 second
    name;            -- then sort each sub group by name

Во втором редактировании избранное не сортируется по имени, а просто отображается в том порядке, в котором они есть в базе данных.

Filippo 19.06.2024 10:12

@Filippo Таблицы не имеют внутреннего порядка. Если у вас нет столбца для заказа, вы не сможете этого сделать.

Charlieface 19.06.2024 14:48

Другие вопросы по теме