반응형
Oracle 하위 쿼리에서 외부 블록 2단계 위쪽의 변수를 볼 수 없습니다.
저는 게시물과 게시물과 관련된 첫 번째 의견을 한 번 문의하고 싶습니다.Postgre에서 제가 하는 방법은 다음과 같습니다.SQL:
SELECT p.post_id,
(select * from
(select comment_body from comments where post_id = p.post_id
order by created_date asc) where rownum=1
) the_first_comment
FROM posts p
그리고 그것은 잘 작동합니다.
그러나 Oracle에서 ORA-00904 p.post _id: invalid identifier 오류가 발생합니다.
하나의 서브셀렉트에 대해서는 문제가 없을 것 같지만, 로넘(Oracle에서는 제한/오프셋 없음)을 사용해야 하기 때문에 하나의 서브셀렉트로는 코멘트를 받을 수 없습니다.
내가 여기서 뭘 잘못하고 있는 거지?
아니요.Oracle
하나 이상의 깊이에 중첩된 하위 쿼리는 상관하지 않습니다(그리고 둘 다 상관이 없습니다.MySQL
).
이것은 잘 알려진 문제입니다.
사용:
SELECT p.post_id, c.*
FROM posts
JOIN (
SELECT c.*, ROW_NUMBER() OVER (PARTITION BY post_id ORDER BY created_date ASC) AS rn
FROM comments c
) c
ON c.post_id = p.post_id
AND rn = 1
플랫폼에 의존하지 않는 SQL이 필요한 경우 다음과 같이 작동합니다.
SELECT p.post_id
, c.comment_body
FROM posts p
, comments c
WHERE p.post_id = c.post_id
AND c.created_date IN
( SELECT MIN(c2.created_date)
FROM comments c2
WHERE c2.post_id = p.post_id
);
그러나 (post_id, created_date)가 주석의 기본 키라고 가정합니다.그렇지 않은 경우, 동일한 created_date를 가진 주석이 있는 두 개 이상의 줄 게시물을 받게 됩니다.
또한 Quassnoi가 제공하는 분석을 사용하는 솔루션보다 느릴 수 있습니다.
언급URL : https://stackoverflow.com/questions/2048244/oracle-subquery-does-not-see-the-variable-from-the-outer-block-2-levels-up
반응형
'programing' 카테고리의 다른 글
하위 값별 Firebase 검색 (0) | 2023.06.16 |
---|---|
UICollection 간격 여백 보기 (0) | 2023.06.16 |
Python으로 이미지 표시 (0) | 2023.06.16 |
iOS UIBarButtonItem의 제목 텍스트 제거 (0) | 2023.06.16 |
Oracle에서 유지 여부와 상관없이 파티션 분할 (0) | 2023.06.16 |