SELECT CASE
WHEN EXISTS (SELECT 1 FROM SAVE WHERE LOGIN_ID='user')
THEN (SELECT SID FROM SAVE WHERE LOGIN_ID='user')
ELSE 0
END AS SAVE_RESULT,
Q.QID,Q.TITLE,C.CATEGORY
FROM QUESTIONS Q
JOIN
CATEGORY C ON Q.CATEGORY = C.CGID
WHERE
Q_ACCESS='T'
ORA-01427: single-row subquery returns more than one row
ORA-01427 오류는 단일 행 하위쿼리가 여러 개의 행을 반환하는 경우 발생합니다. 주어진 SQL 문에서도 해당 오류가 발생한 이유는 SELECT SID FROM SAVE WHERE LOGIN_ID='user' 서브쿼리가 여러 개의 행을 반환하기 때문입니다.
SELECT
CASE
WHEN S.SID IS NOT NULL
THEN S.SID
ELSE 0
END AS SAVE_RESULT,
Q.QID, Q.TITLE, C.CATEGORY
FROM
QUESTIONS Q
JOIN
CATEGORY C ON Q.CATEGORY = C.CGID
LEFT JOIN
SAVE S ON S.LOGIN_ID = 'user'
WHERE
Q.Q_ACCESS = 'T';
위의 SQL 문에서는 SAVE 테이블을 QUESTIONS 테이블과 LEFT JOIN하여 'user'에 해당하는 LOGIN_ID의 SID 값을 가져옵니다. 그리고 CASE 문을 사용하여 SID 값이 NULL인 경우에는 0을 반환하도록 합니다.
'Exception' 카테고리의 다른 글
| 이클립스 트리거 에러 (1) | 2024.01.27 |
|---|---|
| uncaught syntaxerror: unexpected token ';' (0) | 2024.01.22 |
| Listener refused the connection with the following error - 연결을 거부 (1) | 2023.12.21 |
| 인덱스 누락 - sql (0) | 2023.12.20 |
| invalid character(잘못된 문자) -sql (0) | 2023.12.20 |