저장 프로 시저를 SQL Server에서 Oracle로 변환하여 제품과 호환되도록하는 데 어려움을 겪고 있습니다.
타임 스탬프를 기반으로 일부 테이블의 최신 레코드를 반환하는 쿼리가 있습니다.
SQL 서버 :
SELECT TOP 1 *
FROM RACEWAY_INPUT_LABO
ORDER BY t_stamp DESC
=> 가장 최근 기록을 반환합니다.
그러나 Oracle :
SELECT *
FROM raceway_input_labo
WHERE rownum <= 1
ORDER BY t_stamp DESC
=> ORDER BY
문에 상관없이 가장 오래된 레코드를 반환합니다 (아마도 인덱스에 따라 다름) !
내 요구 사항에 맞게 Oracle 쿼리를 다음과 같이 캡슐화했습니다.
SELECT *
FROM
(SELECT *
FROM raceway_input_labo
ORDER BY t_stamp DESC)
WHERE rownum <= 1
그리고 그것은 작동합니다. 그러나 그것은 나에게 끔찍한 해킹처럼 들리는데, 특히 관련 테이블에 많은 레코드가있는 경우 더욱 그렇습니다.
이것을 달성하는 가장 좋은 방법은 무엇입니까?