una multiple filas ejemplos convertir concatenar columns columnas columna 10g sql oracle oracle11g

sql - multiple - rownum oracle



Cómo obtener la última fila de una tabla Oracle. (5)

La última fila de acuerdo con un orden total estricto sobre la clave compuesta K (k1, ..., kn):

SELECT * FROM TableX AS o WHERE NOT EXISTS ( SELECT * FROM TableX AS i WHERE i.k1 > o.k1 OR (i.k1 = o.k1 AND i.k2 > o.k2) ... OR (i.k1 = o.k1 AND i.k2 = o.k2 AND i.k3 = o.k3 AND ... AND i.kn > o.kn) ) ;

Dado el caso especial en el que K es simple (es decir, no compuesto), lo anterior se reduce a:

SELECT * FROM TableX AS o WHERE NOT EXISTS ( SELECT * FROM TableX AS i WHERE i.k1 > o.k1 ) ;

Tenga en cuenta que para que esta consulta devuelva solo una fila, la clave debe ordenarse sin ataduras. Si se permiten vínculos, esta consulta devolverá todas las filas vinculadas con la clave más grande.

Quiero obtener la última fila, que inserté en una tabla en una base de datos Oracle 11g Express. ¿Cómo puedo hacer esto?


No hay tal cosa como la "última" fila en una tabla, ya que una tabla de Oracle no tiene un concepto de orden.

Sin embargo, suponiendo que quisiera encontrar la última clave primaria insertada y que esta clave primaria es un número incremental, podría hacer algo como esto:

select * from ( select a.*, max(pk) over () as max_pk from my_table a ) where pk = max_pk

Si tiene la fecha en que se creó cada fila, esto se convertiría, si la columna se nombra como created :

select * from ( select a.*, max(created) over () as max_created from my_table a ) where created = max_created

Alternativamente, puede usar una consulta agregada, por ejemplo:

select * from my_table where pk = ( select max(pk) from my_table )

Aquí hay un pequeño SQL Fiddle para demostrar.


Puedes hacerlo así:

SELECT * FROM (SELECT your_table.your_field, versions_starttime FROM your_table VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE) WHERE ROWNUM = 1;

O:

SELECT your_field,ora_rowscn,scn_to_timestamp(ora_rowscn) from your_table WHERE ROWNUM = 1;


SELECT * FROM ( SELECT * FROM table_name ORDER BY sortable_column DESC ) WHERE ROWNUM = 1;


$sql = "INSERT INTO table_name( field1, field2 ) VALUES (''foo'',''bar'') RETURNING ID INTO :mylastid"; $stmt = oci_parse($db, $sql); oci_bind_by_name($stmt, "mylastid", $last_id, 8, SQLT_INT); oci_execute($stmt); echo "last inserted id is:".$last_id;

Consejo: debe usar el nombre de la columna de identificación en {your_id_col_name} a continuación ...

"RETURNING {your_id_col_name} INTO :mylastid"