Я хочу иметь возможность get
следующей и предыдущей строки с использованием SQLite.SQLite выберите следующую и предыдущую строку на основе предложения where
id statusid date
168 1 2010-01-28 16:42:27.167
164 1 2010-01-28 08:52:07.207
163 1 2010-01-28 08:51:20.813
161 1 2010-01-28 07:10:35.373
160 1 2010-01-27 16:09:32.550
46 2 2010-01-30 17:13:45.750
145 2 2010-01-30 17:13:42.607
142 2 2010-01-30 16:11:58.020
140 2 2010-01-30 15:45:00.543
Например:
Учитывая идентификатором 46 Я хотел бы вернуть идентификаторы (предыдущий) и (следующий)
Учитывая идентификатор 160 Я хотел бы вернуть идентификаторы (предыдущий) и (следующий один) и т.д ...
Знайте, что данные упорядочены по statusId then dateCreated DESC
и ИМЕЕТ работать с использованием SQLite.
select * from @t order by statusId, dateCreated desc
Тестовые данные, созданные в SQL сервере ...
set nocount on; set dateformat ymd;
declare @t table(id int, statusId int, dateCreated datetime)
insert into @t
select 168,1,'2010-01-28 16:42:27.167' union
select 164,1,'2010-01-28 08:52:07.207' union
select 163,1,'2010-01-28 08:51:20.813' union
select 161,1,'2010-01-28 07:10:35.373' union
select 160,1,'2010-01-27 16:09:32.550' union
select 46,2,'2010-01-30 17:13:45.750' union
select 145,2,'2010-01-30 17:13:42.607' union
select 142,2,'2010-01-30 16:11:58.020' union
select 140,2,'2010-01-30 15:45:00.543'
Использование SQL Server 2005+ это будет довольно тривиально!
EDIT:
Вот тот же самый сценарий тестовых данных, но и для SQLite, который находится в центре внимания вопрос.
create table t (id int, statusId int, dateCreated datetime);
insert into t
select 168,1,'2010-01-28 16:42:27.167' union
select 164,1,'2010-01-28 08:52:07.207' union
select 163,1,'2010-01-28 08:51:20.813' union
select 161,1,'2010-01-28 07:10:35.373' union
select 160,1,'2010-01-27 16:09:32.550' union
select 46,2,'2010-01-30 17:13:45.750' union
select 145,2,'2010-01-30 17:13:42.607' union
select 142,2,'2010-01-30 16:11:58.020' union
select 140,2,'2010-01-30 15:45:00.543';
EDIT 2 Пожалуйста, обратите внимание, что данные не является хорошим примером, так что я есть изменить id 146
к 46
Превосходно, пару небольших модов, но это работает как шарм! – Rippo