Uso de rownum en la sentencia SQL de Oracle en combinación con cláusula orden por
¿Cuál de las siguientes dos sentencias de SQL devolverá el conjunto de resultados deseado? (es decir, las diez filas con Estado = 0 y los tiempos de inicio más altos)?
¿Ambas declaraciones siempre devolverán el mismo conjunto de resultados? (StartTime es único)?
<code>SELECT * FROM MyTable WHERE Status=0 AND ROWNUM <= 10 ORDER BY StartTime DESC SELECT * FROM ( SELECT * FROM MyTable WHERE Status=0 ORDER BY StartTime DESC ) WHERE ROWNUM <= 10 </code>
Fondo
Mi DBAdmin me dijo que la primera declaración seráprimero Limite la tabla a 10 filas y luego ordene esas filas aleatorias por StartTime, que definitivamente no es lo que quiero. De lo que aprendí enesa respuestaLa orden por la cláusula de la segunda declaración es redundante y podría ser eliminada por un optimizador, que tampoco es lo que quiero.
Le pregunte apregunta similar de acuerdo con ellimit
en una consulta a una base de datos SQLite y estoy interesado en comprender cualquier diferencia con las afirmaciones anteriores (usandolimit
Vsrownum
) utilizado con un oráculo db.