sql - seleccionar - Seleccione Top(todos menos 10) desde... en Microsoft Access
no repetir registros en consulta sql server (4)
Digamos que tengo una consulta
SELECT TOP 10 ... FROM ... ORDER BY ...
en Access (bueno, realmente Jet). La pregunta es: ¿cómo puedo obtener todas las otras filas ... todo menos el top 10?
¿No podrías hacer algo como
SELECT ... FROM ...
WHERE PK NOT IN (SELECT TOP 10 PK FROM ...)
ORDER BY ...
puede que no sea tan eficiente, pero esa es la única manera de pensar que puedo hacer algo así. AFAIK no hay una cláusula "BOTTOM" en SQL :)
SELECT ... FROM ....
WHERE myID NOT IN
(SELECT TOP 10 myID FROM ... ORDER BY rankfield)
ORDER BY sortfield
Tenga en cuenta que su pedido ordenado podría, (si lo desea) ser diferente a su pedido clasificado.
Editar : Otra idea: si ya sabía cuántas filas TOTALES había, podría hacerlo (suponiendo 1000 filas):
SELECT TOP 990 ... FROM .... ORDER BY sortfield DESC
Simplemente cambie el orden y tome la porción restante.
Por supuesto, si aún desea los resultados en el orden original, tendría que hacer algo tonto como:
SELECT ...
FROM (SELECT TOP 990 ... FROM .... ORDER BY sortfield DESC)
ORDER BY sortfield ASC
Puede crear un campo de rango ( Formas de crear una columna de rango ) y filtrar de eso: donde rango> 10
Esto es algo que a menudo se hace mejor en el lado del cliente, más bien en el DBMS, es decir, busca todas las filas de la tabla en un conjunto de registros ADO Classic, luego usa la propiedad Filter para eliminar las 10 filas según criterios, o Sort luego configura y luego omite las primeras / últimas 10 filas, o configure la longitud de la página según corresponda, omita la primera / última página, etc. No solo depende del número de filas sino también de la aplicación de destino, por ejemplo, sé que si esta es la fuente de datos para un informe de MS Access y el filtrado de las filas no deseadas pueden ser una gran molestia.