sql - тестовые записи вставляются по порядку - PullRequest
2 голосов
/ 22 августа 2011

У меня есть таблица со столбцом skey (сгенерированным порядковым номером) и столбцом временной метки.

Мне нужно написать запрос, который найдет все записи с более высокой skey, но более старой временной меткой, чем предыдущаязаписи, как это будет указывать на проблему.

то есть что-то вроде:

select * from table
where timestamp < (select max(timestamp) from table where skey less than currrecord)
order by skey desc;

Ответы [ 2 ]

1 голос
/ 22 августа 2011

Используйте self join, т. Е. Присоедините таблицу к себе с критериями, которые вы упомянули (SKey и TimeStamp)

Select T1.Skey HigherSkey, T2.SKey LowerSkey, T1.Timestamp LowerTimestamp, T2.Timestamp HigherTimestamp
From MyTable T1
Inner Join MyTable T2
    On T1.Timestamp < T2.Timestamp
    And T1.Skey > T2.Skey
0 голосов
/ 22 августа 2011

Если ваша последовательность завершена (то есть в ней нет дыр) что-то вроде этого должно работать:

select t2.* from table t1
inner join table t2 on t2.skey = t1.skey + 1
where t2.timestamp < t1.timestamp
order by t2.skey desc;

Если нет, вы можете использовать что-то подобное для получения идентификаторов:

select t2.skey from table t1, table t2
where t1.skey < t2.skey and t2.timestamp < t1.timestamp
group by t2.skey
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...