У меня есть таблица со следующими столбцами:
идентификатор | вернуться (bool) | FL (десятичный) | FR (десятичный) | RL (десятичный) | RR (десятичный) | свидание
Мне нужно написать оператор SELECT, который будет ORDER BY для нескольких столбцов, в зависимости от значения поля «пересмотреть».
- ORDER BY 'revisit' DESC - записи со значением 1 в этом поле будут первыми, а 0 будут последними
- Если «повторное посещение» = 1, закажите наименьшее значение, которое существует в FL, FR, RL и RR. Таким образом, если запись 1 имеет значения 4,6, 4,6, 3,0, 5,0 в этих полях, а запись 2 имеет значения 4,0, 3,1, 3,9 и 2,8, то первой будет возвращена запись 2, поскольку она содержит наименьшее значение в этих четырех столбцах.
- Если 'revisit' = 0, то упорядочить по дате - самая старая дата будет первой.
До сих пор у меня правильно упорядочивался только «повторный визит» и по дате, если «повторный визит» = 0, но упорядочивание по четырем столбцам одновременно, когда «повторный визит» = 1, не выполняется.
SELECT *
FROM vehicle
ORDER BY
`revisit` DESC,
CASE WHEN `revisit` = 1 THEN `FL` + `FR` + `RR` + `RL` END ASC,
CASE WHEN `revisit` = 0 THEN `date` END ASC
Вместо этого кажется, что он упорядочивается по сумме четырех столбцов (что имело бы смысл, учитывая символы добавления), так как же я ЗАКАЗЫВАЮ эти столбцы одновременно, как отдельные столбцы, а не сумму.
Я надеюсь, что это имеет смысл и спасибо!