본문 바로가기
MySql

MySQL # 1242-서브 쿼리가 2 개 이상의 행을 반환합니다-MySQL

by 베이스 공부 2021. 1. 26.
반응형

MySQL 데이터베이스에서 이미지 이름을 선택하는 select 문을 만들려고합니다. 테이블 이름은 pictures_archive입니다. 나는 또한 그들이 가지고있는 카테고리에 따라 이러한 사진을 선택하려고 노력하고 있습니다. 코드는 다음과 같습니다.

SELECT pictures_archive_filename FROM pictures_archive 
WHERE pictures_archive_id = (SELECT pictures_archive_id 
FROM pictures_archive_category WHERE pictures_category_id = 9)

"# 1242-하위 쿼리에서 행이 두 개 이상 반환 됨"오류가 발생합니다. 이유는 알 수 있지만 어떻게해야하는지 알 수 없습니다.

 

해결 방법

 

하위 쿼리가 여러 값을 반환 할 수 있으므로 IN 은 where 절에 맞아야합니다.

SELECT pictures_archive_filename 
FROM pictures_archive 
WHERE pictures_archive_id IN 
(
   SELECT pictures_archive_id 
   FROM pictures_archive_category 
   WHERE pictures_category_id = 9
)

이에 대한 대안은 더 효율적인 두 테이블을 join 하는 것입니다.

SELECT  pictures_archive_filename 
FROM    pictures_archive a 
        INNER JOIN pictures_archive_category b
            ON a.pictures_archive_id = b.pictures_archive_id
WHERE   b.pictures_category_id = 9

 

참조 페이지 https://stackoverflow.com/questions/12597620

 

 

반응형

댓글