반응형
SQL에서 select절 서브쿼리를 진행하던중에 에러가 발생하였습니다.
more than one row returned by a subquery used as an expression
'표현식으로 사용되는 하위 쿼리에서 반환된 둘 이상의 행' 이라는 에러입니다.
빠르게 정리해보죠!!
원인
일단 제 쿼리와 결과는 이렇습니다.
1
2
3
4
5
6
7
8
|
select
*
from
class
group by
mt_idx
|
cs |
위와 같이 14개의 행이 출력되는 쿼리에서
1
2
3
4
5
6
7
8
|
select
*
,(SELECT d.time FROM chart AS d WHERE a.idx = d.idx ) AS time
from
class
group by
mt_idx
|
cs |
서브쿼리 추가하였더니 에러가 발생한 현상입니다.
SELECT d.time FROM chart 의 조회결과는 15,000개가 나오는데 14행에 서브쿼리를 넣으려고 하니
에러 표현식 그대로 '표현식으로 사용되는 하위 쿼리에서 반환된 둘 이상의 행' 이 나타난겁니다.
결국 행의 차이로 인한 에러입니다.
서브쿼리의 결과값도 기존 쿼리의 결과 값(14개)과 맞춰줘야합니다.
반응형
해결방법
기존 쿼리에서 GROUP BY 를 해줬기 때문에 서브쿼리에서도 중복제거를 해줘야합니다.
1
2
3
4
5
6
7
8
|
select
*
,(SELECT DISTINCT d.time FROM chart AS d WHERE a.idx = d.idx ) AS time
from
class
group by
mt_idx
|
cs |
DISTINCT를 선언해주거나
1
2
3
4
5
6
7
8
|
select
*
,(SELECT d.time FROM chart AS d GROUP BY d.time HAVING a.idx = d.idx ) AS time
from
class
group by
mt_idx
|
cs |
GROUP BY / HAVING 을 사용해줘서 중복을 제거합니다.
more than one row returned by a subquery used as an expression 에러가 발생하면
행의 차이로 인한 에러이니, 이 점을 확인하면 도움이 되지 않을까 생각합니다.
반응형
'Error' 카테고리의 다른 글
[Error] An error occurred while collecting items to be installed (0) | 2023.06.21 |
---|---|
[Error] UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb9 in position 0: invalid start byte (0) | 2023.06.07 |
[Error] Uncaught SyntaxError: Unexpected token ' ' 해결 방법 (1) | 2022.10.25 |
[Error] getCookie is not defined 해결 방법 (0) | 2022.10.04 |
[Error] Cannot rollback when autoCommit is enabled 해결 방법 (0) | 2022.09.21 |
댓글