#1242 - Subquery returns more than 1 row - mysql

71,753

Since your subquery can return multiple values, IN should fit in youy where clause.

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
)

an alternative for this is to join both tables which is more efficient.

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
Share:
71,753

Related videos on Youtube

Apostrofix
Author by

Apostrofix

Updated on January 07, 2020

Comments

  • Apostrofix
    Apostrofix over 3 years

    I am trying to make a select statement that selects the image names from a MySQL database. The table is called - pictures_archive. I am also trying to select these pictures depending on the category they have. The code is:

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

    It gives me an "#1242 - Subquery returns more than 1 row" error. I can see why, but can't figure it out how to do it.

  • aashima almost 8 years
    Had been stuck with something similar.. Thanks so much
  • gihanchanuka
    gihanchanuka almost 6 years
    I tried alternative approach JOIN on a table which has more than 20 million rows (indexed), as it mentioned it work efficiently than using IN

Related