@mrFlyer

Как отсортировать записи по условиям?

Нужно отсортировать строки по определенным факторам, где каждый фактор влияет на вес записи в сортировке.
На MySQL код видится таким:
SELECT 
	*, 
	case
		when column1 = 'какое то условие'
		then -1000
		else 0
	end As Factor1,
	case
		when column2 = 'какое то условие'
		then 100
		else 0
	end As Factor2,
	case
		when column3 = 'какое то условие'
		then 200
		else 0
	end As Factor3,
	(Factor1+Factor2+Factor3) as priority
ORDER BY priority;

Это оптимальное решение или можно через какую то временную переменную сделать расчеты?
Т.е. что то типа такого
(
	tmpVar = 0;	
	if (column1 = 'какое то условие'){
		tmpVar -= 1000;
	}
	if (column2 = 'какое то условие'){
		tmpVar += 100;
	}
	if (column3 = 'какое то условие'){
		tmpVar += 200;
	}		
	return tmpVar;
) AS priority
  • Вопрос задан
  • 51 просмотр
Пригласить эксперта
Ответы на вопрос 1
@Akina
Сетевой и системный админ, SQL-программист.
SELECT *
FROM tablename, 
ORDER BY column3 = 'какое то условие' DESC,
         column2 = 'какое то условие' DESC,
         column1 = 'какое то условие' DESC

Запрос предполагает, что columnX не содержит NULL.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы