2015-07-06 4 views
2

У меня есть таблица ALL_DEGREES, имеющая один столбец DEGREE, который индексируется.MySQL: выборка круговых записей в инструкции SELECT

DEGREE 
33 
67 
101 
110 
174 
182 
189 
213 
257 
258 
299 

Как мы знаем, что столбец может иметь максимальное значение 360. Теперь, если я знаю, что определенная степень сказать 257, мне нравится получать строки, которые включают в себя 257 и следующие 7 градусов т.е. 257, 258, 299, 33, 67 , 101, 110

Есть ли способ написать SELECT запрос для этого?

+1

Возможно просто выбрать всю таблицу структуры в памяти и работать с ним в приложении. –

+0

так в основном «ближайший» 7 градусов? 'порядок по абс (257 градусов) предел 8'? –

+0

@MikeBrant: Нет, к сожалению, его огромный стол с DEGREE как плавающий и много записей. – Atul

ответ

5

Вы можете использовать:

SELECT DEGREE 
FROM ALL_DEGREES 
ORDER BY CASE WHEN DEGREE >= 257 THEN 0 ELSE 1 END, 
     DEGREE 
LIMIT 8 

Это достигает своего рода круговое заказа ваших записей.

Demo here

+1

Просто отлично :) Спасибо! – Atul

2

ли эта работа для вас

SELECT * FROM all_degrees 
where degree >= 257 
union 
SELECT * FROM all_degrees 
LIMIT 8; 
+0

Похоже, это сработает! Вот SQLfiddle: http://sqlfiddle.com/#!9/f5c33/2 –

+0

Только что изменено в соответствии с вашими именами таблиц и полей – PaulF

+0

Если эти запросы заказываются, значит, вы уверены, что ближе к 257? – AdamMc331

Смежные вопросы