#1242 - Subquery returns more than 1 row - mysql

前端 未结 4 1334
天涯浪人
天涯浪人 2020-12-15 11:54

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

相关标签:
4条回答
  • 2020-12-15 12:12
    SELECT p.pictures_archive_filename FROM 
    pictures_archive p inner join pictures_archive_category pc 
    on p.pictures_archive_id = pc.pictures_archive_id 
    where pc.pictures_category_id=9
    
    0 讨论(0)
  • 2020-12-15 12:16
    SELECT pictures_archive_filename FROM pictures_archive 
    WHERE pictures_archive_id = (SELECT pictures_archive_id 
    FROM pictures_archive_category WHERE pictures_category_id = 9 LIMIT 1)
    
    0 讨论(0)
  • 2020-12-15 12:19

    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
    
    0 讨论(0)
  • 2020-12-15 12:21

    Use IN instead of equal (=)

    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)
    

    OR if possible use a JOIN between 2 tables

    0 讨论(0)
提交回复
热议问题