Вы говорите, что пробовали предложение TOP, но оно должно работать
SELECT TOP 30 * FROM Mails WHERE timeReceived < '2012-02-01 12:00:00' ORDER BY timeReceived DESC
Вы должны принять во внимание это .
Директива topне возвращает лучшие n пунктов, как легко можно поверить.Вместо этого он возвращает по крайней мере n различных элементов, определенных порядком результата.
Редактировать , чтобы уточнить:
SELECT TOP 25
FirstName, LastName
FROM Students
WHERE GraduationYear = 2003
ORDER BY GradePointAverage DESC;
http://office.microsoft.com/en-us/access-help/results.aspx?qu=top&ex=1&origin=HA010256402
Предикат TOP не выбирает между равными значениями.В предыдущем примере, если двадцать пятая и двадцать шестая наивысшие баллы одинаковы, запрос возвратит 26 записей.
Так что нет, строки с одинаковой отметкой времени не пропускаются,Но если 30-я и 31-я записи (согласно пункту заказа) имеют одинаковую временную метку, обе будут возвращены, и вы получите 31 запись.
Если вы хотите принудительно вернуть 30 записей, вам необходимо включитьпервичный ключ в Order By
для различения связанных значений:
SELECT TOP 30 *
FROM Mails
WHERE timeReceived < '2012-02-01 12:00:00'
ORDER BY timeReceived DESC, MailID ASC