MYSQL | MySQL error 1242 : subquery returns more than 1 row
작성자
error 1242 : subquery returns more than 1 row
 
쿼리문에서 return값이 하나 이상이어서 발생하는 에러인데 결론부터 말하자면 'any' 라고 붙여주면 된다.
 
(X) select * from student where stdid=(select stdid from advisor where instid='201201003');
 
(O) select * from student where stdid=any(select stdid from advisor where instid='201201003');
 
 
 
 
 
 
download?fid=642236814e2e6612a6d13750a13
 
 
위와같은 다이어그램에서 advisor라는 관계형 테이블을 만들었는데
 
잘못만듬... '학생' 이라는 테이블에 instid를 외부키로 가져와서 테이블에 추가해주면 될것 같기도 한데 advisor라는 테이블에 각각 instid와 stdid를 외부키로 하는 테이블을 만들어 버렸다. 이미 데이터까지 다 넣어버린 상태라 그냥 하기로 하고 진행 ㅡㅡ;;
 
download?fid=642236814e2e6612299f3750a55
 
 
다음과 같은 테이블에서 instid가 '201201003' 인 조건만 찾아낸 뒤 매칭되는 학번을 이용해서 학생테이블로부터
정보를 가지고 오고 싶었다.
 
instid 201201003와 매칭되어 있는 stdid는
download?fid=642236814e2e66128f0a3750a7e
 
총 3개이다.
 
학생 테이블로 부터 stdid와 매칭되는 정보를 가져오기 위해 처음에 사용한 쿼리문은
 
select * from student where stdid=(select stdid from advisor where instid='201201003');
 
이었고, advisor 테이블로 부터 instid가 201201003인 stdid를 가져와 student 테이블의 조건으로 넣어주는 것이다.
 
하지만 여기에서 error 1242 : subquery returns more than 1 row 에러가 발생...
 
열심히 구글링을 해본 결과!!
 
ANY 를 넣어주면 된단다!!
 
select * from student where stdid=any(select stdid from advisor where instid='201201003');
 
any를 넣어주고 다시한번 검색을 해보면
 
download?fid=642236814e2e6612bc0c3750ad1
 
 
잘 나오는걸 확인할 수 있었다.

 

댓글목록

등록된 댓글이 없습니다.

총 게시물 93 개, 페이지 4 RSS
제목 작성자
MYSQL 년월일시간분(예:201406241621)으로 저장되어 있는 데이타를 년-월-일 시간:분:초로 H
MYSQL Column '컬럼명' in order clause is ambiguous H
MYSQL mysql update할때 select함께 하기 H
MYSQL 한글이 아닌값 검색 H
MYSQL 문자열을 치환 REPLACE() H
MYSQL 숫자의 천단위 구분자 삽입 FORMAT() H
MYSQL 문자열을 특정 구분자를 포함 합치기 CONCAT_WS() H
MYSQL 문자열을 합치기 CONCAT() H
MYSQL 문자열의 길이와 Byte CHAR_LENGTH(), LENGTH() H
MYSQL 문자열로 된 숫자를 정렬하기 H
MYSQL MySQL error 1242 : subquery returns more than 1 row H
MYSQL SQL / MySQL 서브쿼리(SubQuery) H
MYSQL 특수 비교 연산자와 검색 결과의 정렬 : like, between, in H
MYSQL Mysql 에서 php explode() 함수와 같은 효과 H
MYSQL ORDER by 정렬(임의적인 순번) H
게시물 검색