Составить запрос...

Aco

Новичок
Составить запрос...

Возможно уже туплю, но....

Есть таблица, одно из полей 4х значные числа. Есть ещё некое число N.
Нужно ОДНИМ запросом вывести результат, такой что бы сначало вывелось все записи где >=N, а потом <N, причем эти фрагменты отсортированы попорядку.

На пример:
в таблице
1 1567 ...
2 1678 ...
3 1456 ...
4 1789 ...
5 1345 ...
6 1234 ...

N=1500

выведет
1 1567 ...
2 1678 ...
4 1789 ...
6 1234 ...
5 1345 ...
3 1456 ...
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Возможно
SELECT *, IF(chislo>1500, 1, 2) as flag FROM table ORDER BY flag, chislo
 

Wicked

Новичок
Имхо с точки зрения скорости и читабельности лучше сделать union.

А откуда возникла необходимость так делать? Это какая-то нетипичная хотелка.
 

Aco

Новичок
Автор оригинала: Wicked
Имхо с точки зрения скорости и читабельности лучше сделать union.

А откуда возникла необходимость так делать? Это какая-то нетипичная хотелка.
Там такая ситуация: это некое подобие даты в числовом формате без учета года ММДД (так уж вот сделано). Пример выше был абстрактный. И вот требуется выводить записи позднее текуще даты (приведённая в такой же формат) и, следовательно получается, следующего года. Сейча реализовано в 2 запроса. Но в скрипте произошли изменения и одни бы запрос просто очень сильно упростил бы работу скрипта...

-~{}~ 14.05.07 15:55:

О, разрешили!

ORDER BY IF(field1>=N,0,1), field1
 

Aco

Новичок
Ок. Попробую с UNION.

-~{}~ 15.05.07 16:32:

ага, UNION не подошёл по той причине что от всего этого объеденения берётся хитрый LIMIT x, y. А UNION только позволяет применить LIMIT только к каждой части, как я знаю, или я не прав?
 

Aco

Новичок
Автор оригинала: chira
Aco

в этом ты прав :)
LIMIT можно применить к результату UNION ...
Странно, все мои попытки потерпели неудачу...
Можете привести пример такого запроса?
Или Скинуть ссылку на документацию?
 
Сверху