반응형
Oracle에서 Select Exists를 사용하는 방법?
아래에 해당하는 것은 무엇입니까?
SELECT CAST(
CASE WHEN EXISTS(SELECT * FROM theTable where theColumn like 'theValue%') THEN 1
ELSE 0
END
AS BIT)
나는 단지 위와 같이 존재하는 오라클 쿼리를 사용하고 그것이 0 또는 1을 반환하기를 원합니다.
이와 동등한 것은 다음과 같습니다.
select count(*)
from dual
where exists (SELECT * FROM theTable where theColumn like 'theValue%')
이렇게 하면 동일한 출력이 표시됩니다.방금 제거했습니다.CAST
그리고 a를 추가했습니다.FROM dual
오라클이 다음과 같은 질문을 허용하지 않기 때문에SELECT
그리고 없는FROM
:
SELECT
CASE WHEN EXISTS(SELECT * FROM theTable where theColumn like 'theValue%')
THEN 1
ELSE 0
END
FROM dual ;
SQL-Fiddle에서 테스트 완료
쓸 수 있습니다.
SELECT COUNT(*) FROM theTable WHERE theColumn LIKE 'theValue%' AND ROWNUM = 1
이것은 돌아올 것입니다.0-1
그리고 최적화자는 쿼리가 첫 번째 행 액세스에 최적화되도록 합니다.
MAX를 CASE와 함께 사용할 수도 있습니다.
SELECT MAX(
CASE
WHEN theColumn like 'theValue%' THEN 1
ELSE
0
END)
AS BIT
FROM theTable
다음 쿼리 중 하나를 사용할 수 있습니다. (첫 번째 쿼리가 더 성능이 뛰어납니다.)
SELECT H.TABLE_ID, H.OTHER_FIELD,
(SELECT 'YES' FROM DUAL WHERE EXISTS (SELECT 'X' FROM TABLE_DETAIL DT
WHERE DT.TABLE_ID = H.TABLE_ID) ) WITH_DETAIL FROM TABLE_HEADER H;
SELECT H.TABLE_ID, H.OTHER_FIELD,
CASE WHEN EXISTS(SELECT * FROM IMTS.DETAIL_TABLE DT WHERE DT.TABLE_ID=H.TABLE_ID)
THEN 'Y' ELSE 'N' END WITH_DETAIL FROM HEADER_TABLE H;
SELECT H.TABLE_ID, H.OTHER_FIELD, NVL2(DT.SOME_NOTNULL_FIELD, 'YES','NO') WITH_DETAIL
FROM TABLE_HEADER H
LEFT JOIN TABLE_DETAIL DT ON DT.TABLE_ID=H.TABLE_ID AND ROWNUM<2;
언급URL : https://stackoverflow.com/questions/16562162/how-to-use-select-exists-in-oracle
반응형
'it-source' 카테고리의 다른 글
"반복 가능한 읽기" vs Optimistic (0) | 2023.10.18 |
---|---|
뷰: @click으로 다중 기능을 호출하려면 어떻게 해야 합니까? (0) | 2023.10.18 |
오류: 오류 1064:SQL 구문에 오류가 있습니다. MariaDB 서버에 해당하는 설명서를 확인하십시오. (0) | 2023.10.18 |
git diff -- patientity는 무엇을 위한 것일까요? (0) | 2023.10.18 |
지도 내에서 비동기 함수를 호출하는 가장 좋은 방법은? (0) | 2023.10.18 |