multiple - ¿Cómo seleccionar solo 1 fila de Oracle sql?
pivot oracle ejemplos (11)
La respuesta es:
Debe usar la consulta anidada como:
SELECT *
FROM ANY_TABLE_X
WHERE ANY_COLUMN_X = (SELECT MAX(ANY_COLUMN_X) FROM ANY_TABLE_X)
=> En PL / SQL "ROWNUM = 1" NO es igual a "TOP 1" de TSQL.
Por lo tanto, no puede usar una consulta como esta: "select * from any_table_x donde rownum = 1 orden por any_column_x;" Como el oráculo tiene la primera fila, aplica la cláusula order by.
Deseo utilizar la sintaxis de Oracle para seleccionar solo 1 fila de la tabla DUAL
. Por ejemplo, quiero ejecutar esta consulta:
SELECT user
FROM DUAL
... y tendría, como, 40 registros. Pero solo necesito un registro. ... Y, quiero hacer que suceda sin una cláusula WHERE
.
Necesito algo en el campo nombre_tabla como, por ejemplo:
SELECT FirstRow(user)
FROM DUAL
"FirstRow" es una restricción y, por lo tanto, se coloca en la cláusula where
no en la cláusula select
. Y se llama rownum
select * from dual where rownum = 1;
Encontré esta "solución" escondida en uno de los comentarios. Como lo estaba buscando por un tiempo, me gustaría destacarlo un poco (todavía no puedo comentar o hacer esas cosas ...), así que esto es lo que utilicé:
SELECT * FROM (SELECT [Column] FROM [Table] ORDER BY [Date] DESC) WHERE ROWNUM = 1
Esto me imprimirá la entrada deseada [Columna] desde la entrada más nueva en la tabla, suponiendo que [Fecha] siempre se inserta a través de SYSDATE.
Esta sintaxis está disponible en Oracle 12c:
select * from some_table fetch first 1 row only;
select * from some_table fetch first 1 rows only;
select * from some_table fetch first 10 row only;
select * from some_table fetch first 10 rows only;
^^ Solo quería demostrar que cualquiera de las filas o filas (en plural) se puede usar independientemente de la pluralidad del número deseado de filas.)
Más flexible que select max()
es:
select distinct first_row(column_x) over (order by column_y,column_z,...) from Table_A
No hay limit 1
condición de limit 1
(eso es MySQL / PostgresSQL) en Oracle, necesita especificar where rownum = 1
.
Por lo que sé, la mesa dual
en Oracle es una mesa especial con solo una fila. Entonces, esto sería suficiente:
SELECT user
FROM dual
Si hubiera alguna fila, intente:
select max(user)
from table;
Cláusula no where
Usas ROWNUM.
es decir.
SELECT user FROM Dual WHERE ROWNUM = 1
http://docs.oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns009.htm
tenemos 3 opciones para obtener la primera fila en la tabla Oracle DB.
1) select * from table_name where rownum= 1
es la mejor manera
2) select * from table_name where id = ( select min(id) from table_name)
3)
select * from
( select * from table_name order by id )
where nownum= 1
select name, price
from (
select name, price,
row_number() over (order by price) r
from items
)
where r between 1 and 5;