[SQL] 테이블 오라클의 마지막 행을 얻는 방법
SQL테이블 오라클의 마지막 행을 얻는 방법
나는 오라클 11g Express 데이터베이스의 테이블에 삽입 된 마지막 행을 얻을 싶어요. 이걸 어떻게 할 수 있습니까?
해결법
-
==============================
1.Oracle 테이블 순서의 개념이 없기 때문에 테이블에서 "마지막"행 같은 건 없다.
Oracle 테이블 순서의 개념이 없기 때문에 테이블에서 "마지막"행 같은 건 없다.
그러나 마지막에 삽입 기본 키를 찾을 싶다고 가정이 기본 키가 증분 번호입니다, 당신이 뭔가를 할 수 있습니다 :
select * from ( select a.*, max(pk) over () as max_pk from my_table a ) where pk = max_pk
각 행이 열을 만들어 이름을 지정하면이, 될 것 만들어진 날짜가있는 경우 :
select * from ( select a.*, max(created) over () as max_created from my_table a ) where created = max_created
다른 방법으로는 예를 들어, 집계 쿼리를 사용할 수 있습니다 :
select * from my_table where pk = ( select max(pk) from my_table )
여기에 설명하기 조금 SQL 바이올린입니다.
-
==============================
2.
SELECT * FROM ( SELECT * FROM table_name ORDER BY sortable_column DESC ) WHERE ROWNUM = 1;
-
==============================
3.
select * from table_name ORDER BY primary_id DESC FETCH FIRST 1 ROWS ONLY;
즉 하위 쿼리를 수행하지 않고 단순한 하나
-
==============================
4.복합 키 K 위에 총 엄격한 순서에 따라 마지막 행 (K1, ..., KN)
복합 키 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) ) ;
K (즉 복합 생략) 단순 특별한 경우 주어 상기가 단축된다 :
SELECT * FROM TableX AS o WHERE NOT EXISTS ( SELECT * FROM TableX AS i WHERE i.k1 > o.k1 ) ;
이 쿼리가 반환하는 하나는 관계없이 키해야 순서를 행합니다. 관계가 허용하는 경우,이 쿼리는 최대의 키에 묶여 모든 행을 반환합니다.
-
==============================
5.당신은 이런 식으로 작업을 수행 할 수 있습니다 :
당신은 이런 식으로 작업을 수행 할 수 있습니다 :
SELECT * FROM (SELECT your_table.your_field, versions_starttime FROM your_table VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE) WHERE ROWNUM = 1;
또는:
SELECT your_field,ora_rowscn,scn_to_timestamp(ora_rowscn) from your_table WHERE ROWNUM = 1;
-
==============================
6.
$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;
팁 : 아래 {your_id_col_name}에 ID 열 이름을 사용할 필요가 ...
"RETURNING {your_id_col_name} INTO :mylastid"
from https://stackoverflow.com/questions/12378424/how-to-get-the-last-row-of-an-oracle-a-table by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 보기의 선택은 FROM 절에 하위 쿼리를 포함 (0) | 2020.04.25 |
---|---|
[SQL] 최대 값 테이블을 조인 만 행을 선택 (0) | 2020.04.25 |
[SQL] 그것은 하나의 UPDATE SQL 문으로 여러 업데이트를 수행 할 수 있습니까? (0) | 2020.04.25 |
[SQL] 연속 날짜를 감지하는 것은 SQL을 사용하여 범위 (0) | 2020.04.25 |
[SQL] CASE 대 디코드 (0) | 2020.04.25 |