MYSQL | MySQL error 1242 : subquery returns more than 1 row | |||||
---|---|---|---|---|---|
작성자 | 작성일 | 18-03-08 15:25 | |||
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'); 위와같은 다이어그램에서 advisor라는 관계형 테이블을 만들었는데 잘못만듬... '학생' 이라는 테이블에 instid를 외부키로 가져와서 테이블에 추가해주면 될것 같기도 한데 advisor라는 테이블에 각각 instid와 stdid를 외부키로 하는 테이블을 만들어 버렸다. 이미 데이터까지 다 넣어버린 상태라 그냥 하기로 하고 진행 ㅡㅡ;; 다음과 같은 테이블에서 instid가 '201201003' 인 조건만 찾아낸 뒤 매칭되는 학번을 이용해서 학생테이블로부터 정보를 가지고 오고 싶었다. instid 201201003와 매칭되어 있는 stdid는 총 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를 넣어주고 다시한번 검색을 해보면 잘 나오는걸 확인할 수 있었다.
|
|||||
|
|||||
댓글목록
등록된 댓글이 없습니다.