Вы можете сделать подзапрос в верхней части 5, затем расстроенное соединение, чтобы захватить все записи не в них. Что-то вроде этого:
SELECT *
FROM YourTable AS a
LEFT JOIN (
SELECT TOP 5 ID FROM YourTable ORDER BY Whatever
) AS b ON a.ID = b.ID
WHERE b.ID IS NULL
(я забываю экспромтом, если доступ позволяет заказ в подзапроса, так что вы, возможно, придется сохранить, что в качестве отдельного объекта запроса)
В качестве альтернативы, WHERE NOT EXISTS
критерии:
SELECT *
FROM YourTable
WHERE NOT EXISTS (
SELECT TOP 5 FROM YourTable ORDER BY Whatever
)
Снова, хотя, я не уверен, если доступ позволяет заказ в подзапрос, поэтому если у вас есть, чтобы сохранить один запрос:
SELECT TOP 5 IDField FROM YourTable ORDER BY Whatever
... вид, что называется CriteriaQuery, затем ссылаться на этот запрос в другой запрос:
SELECT *
FROM YourTable
WHERE NOT EXISTS (
SELECT * FROM CriteriaQuery
)
(разница в производительности по сравнению разочарованных присоединиться против которых не существует, будет зависеть от данных ... обычно я хожу с разочарованные присоединиться к первому, для доступа и тонкая настройка при необходимости)
Как вам define 'TOP 5' –
Может ли быть так же просто, как сортировка по убыванию? – WillardSolutions
Я отредактировал, чтобы добавить оператор ORDER BY в запрос. К сожалению, нисходящий сортировка не будет работать, поскольку я не всегда знаю, сколько строк будет указано за пределами этих верхних 5. Я просто знаю, что что-то большее, чем первые 5 столбцов, будет проблемой, которая должна быть решена. И нет, Col1 не является ключевым или идентификационным номером, просто представителем заказа, возвращенного набором записей. – SandPiper