SQL JOIN返回太多行


SQL JOIN returning too many rows

我有三个表:category, offersgalleries。在我的应用程序中,我有一个搜索框,用户可以在其中输入一个category-id,并且在每个报价中最多可以有4个图像。

我正在使用以下SQL:

SELECT offers.id
      ,offers.description
      ,offers.min_bid
      ,offers.max_bid
      ,offers.status
      ,offers.ending_date
      ,galleries.image
      ,galleries.crop
FROM offers 
INNER JOIN galleries ON offers.id = galleries.offer_id 
WHERE cat_id = $id and offers.status = 1

查询的问题是,它返回相同的报价4次,每次不同的图像…但是,我需要的是该报价只返回一次,并在该行中返回第一张图像-忽略与同一报价相关的所有其他图像。

有人能帮我弄清楚如何改变我的SQL做到这一点吗?

您可以使用group by offer limit 4子句

INNER JOIN返回两个表中满足ON条件的所有行。在这种情况下,您可以使用OUTER JOIN,即LEFT JOIN而不是INNER JOIN

或者您也可以使用GROUP BY作为@cjg隐含的聚合结果,但是聚合比使用LEFT JOIN更昂贵。