tutorial tag lib formulario ejemplos sql oracle ingres

sql - formulario - tag libraries



¿Cómo limitar el tamaño del conjunto de resultados para consultas arbitrarias en Ingres? (4)

¡Hey editor de Ninja de Estocolmo! No se preocupe, ha confirmado que "la primera X" funciona bien y es una solución mucho mejor que la que se me ocurrió. ¡Gracias!

En Oracle, el número de filas devuelto en una consulta arbitraria se puede limitar filtrando en la columna rownum "virtual". Considere el siguiente ejemplo, que devolverá, como máximo, 10 filas.

SELECT * FROM all_tables WHERE rownum <= 10

¿Hay alguna manera simple y genérica de hacer algo similar en Ingres?


Cambiando descaradamente mi respuesta. "Limitar 10" funciona para MySql y otros, Ingres utiliza

Select First 10 * from myTable

Árbitro


Hola Craig. Lo siento, hice un Ninja Edit. No, el límite 10 no funciona, me equivoqué al pensar que era SQL estándar compatible con todos. Ingres usa (de acuerdo con el documento) "Primero" para resolver el problema.


select * from myTable limit 10 no funciona.

Han descubierto una posible solución:

TIDs are "tuple identifiers" or row addresses. The TID contains the page number and the index of the offset to the row relative to the page boundary. TIDs are presently implemented as 4-byte integers. The TID uniquely identifies each row in a table. Every row has a TID. The high-order 23 bits of the TID are the page number of the page in which the row occurs. The TID can be addressed in SQL by the name `tid.''

Así que puedes limitar el número de filas que vuelven usando algo como:

select * from SomeTable where tid < 2048

El método es algo inexacto en la cantidad de filas que devuelve. Sin embargo, está bien para mi requerimiento porque solo quiero limitar las filas que regresan de un conjunto de resultados muy grande para acelerar las pruebas.