2013-10-01 2 views
0

У меня есть эта таблица sqlite3 (упрощенный):SQLite3: динамика между запросом

+--------+----------+-------+ 
| ROUTE | WPNumber | WPID | 
+--------+----------+-------+ 
| A123 | 1  | WP001 | 
| A123 | 2  | WP002 | 
| A123 | 3  | WP003 | 
| [...] | [...] | [...] | 
| A123 | 20 | WP020 | 
+--------+----------+-------+ 

Допустим, я хочу, чтобы пройти этот маршрут в обратном направлении (020 001).

Как получить все WPID между ними? Я знаю, что можно построить запрос с использованием BETWEEN и DESC, но тогда мне придется создавать два отдельных запроса и проверять Python, когда использовать этот запрос. Возможно ли, чтобы sqlite3 выполнял работу независимо от направления (наоборот или нет).

+0

Как должен знать запрос, какое направление использовать? –

ответ

0

Вы можете изменить порядок сортировки, изменив номер, используемый в предложении ORDER BY. Установите параметр ? либо 1 или -1:

SELECT WPID 
FROM ThisTable 
WHERE ROUTE = 'A123' 
ORDER BY WPNumber * ? 

Если бы вы просто использовать подобный запрос с DESC, база данных будет иметь более широкие возможности для оптимизации сортировки с индексом.

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