Условие if в сортировке order by mysql
Подскажите пожалуйста, есть таблица:
id|user_with|user_creator|fav_user_with|fav_user_creator|
1 | 10 | 15 | 1 | 0 |
2 | 10 | 15 | 0 | 1 |
3 | 15 | 10 | 0 | 1 |
4 | 15 | 10 | 1 | 0 |
5 | 15 | 10 | 0 | 1 |
Как я могу сделать сортировку.
Если user_creator = 15 и fav_user_creator = 1 то order by fav_user_creator desc, id desc.
Если user_with = 15 и fav_user_with = 1 то order by fav_user_with desc, id desc.
Должно получиться при первом условии:
id|user_with|user_creator|fav_user_with|fav_user_creator|
2 | 10 | 15 | 0 | 1 |
5 | 15 | 10 | 0 | 1 |
4 | 15 | 10 | 1 | 0 |
3 | 15 | 10 | 0 | 1 |
1 | 10 | 15 | 1 | 0 |
Должно получиться при втором условии:
id|user_with|user_creator|fav_user_with|fav_user_creator|
4 | 15 | 10 | 1 | 0 |
5 | 15 | 10 | 0 | 1 |
3 | 15 | 10 | 0 | 1 |
2 | 10 | 15 | 1 | 0 |
1 | 10 | 15 | 0 | 1 |
Ответы (1 шт):
Автор решения: Герман Борисов
→ Ссылка
…
ORDER BY
CASE
WHEN user_creator = 15 AND fav_user_creator = 1 THEN fav_user_creator
WHEN user_with = 15 AND fav_user_with = 1 THEN fav_user_with
END desc,
id desc