Задать вопрос
mrusklon
@mrusklon
Не получается? Яростно гугли!

Как правильно сделать сортировку в sql?

делаю такой запрос
(SELECT * FROM users
INNER JOIN predprijatie ON users.mesto_rab = predprijatie.pred_id
WHERE user_visible=1 AND parent_id=0 AND users_id = 34)
UNION
(SELECT * FROM users
INNER JOIN predprijatie ON users.mesto_rab = predprijatie.pred_id
WHERE user_visible=1 AND parent_id=0 AND users_id <> 34
ORDER BY name ASC , mesto_rab ASC )


первый select выбирает только одну строку и ставит ее первой в выдаче , второй запрос выбирает все остальные строки кроме той из первой и сортирует по двум колонкам

проблема в том что сортировка проходит и по первому запросу тоже , как не сортировать первый запрос?
  • Вопрос задан
  • 86 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
tsklab
@tsklab
Здесь отвечаю на вопросы.
SELECT 0, name, mesto_rab, * FROM users
INNER JOIN predprijatie ON users.mesto_rab = predprijatie.pred_id
WHERE (user_visible=1) AND (parent_id=0) AND (users_id = 34)
UNION
SELECT 1, name, mesto_rab, * FROM users
INNER JOIN predprijatie ON users.mesto_rab = predprijatie.pred_id
WHERE (user_visible=1) AND (parent_id=0) AND (users_id <> 34)
ORDER BY 1, 2 ASC, 3 ASC

Или без UNION
SELECT * FROM users
INNER JOIN predprijatie ON users.mesto_rab = predprijatie.pred_id
WHERE (user_visible=1) AND (parent_id=0)
ORDER BY CAST( users_id - 34 AS BIT), name ASC , mesto_rab ASC
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы