我有2个mysql表,即“属性”和“图像”。

          Properties
  +------------+---------------+
  | propertyId | propertyTitle |
  +------------+---------------+
  |          1 | 1 acre land   |
  |          2 | 2 acre land   |
  |          3 | 3 acre land   |
  +------------+---------------+

                Images
  +---------+---------------+---------------+
  | imageId |     image     |  propertyId   |
  +---------+---------------+---------------+
  |       1 | land.jpeg     |        1      |
  |       2 | landview.jpg  |        1      |
  |       3 | viewland.jpeg |        2      |
  +---------+---------------+---------------+


它们具有一对多的关系,图像表具有属性表的外键。我想执行一个查询,该查询选择一个属性,然后选择该属性的单个图像。
我正在尝试使用的查询是

   SELECT * FROM properties p
    JOIN (SELECT * FROM images im LIMIT 1)
    ON im.propertyId = p.propertyId;


它不起作用。它也不返回错误。

最佳答案

我们可以使用两个联接来解决此问题。首先,如您在问题中怀疑的那样,将属性表加入到图像表。然后,执行其他操作以加入子查询,该子查询为每个属性找到第一个图像。

SELECT
    p.propertyId,
    p.propertyTitle,
    i1.image
FROM properties p
INNER JOIN images i1
    ON p.propertyId = i1.propertyId
INNER JOIN
(
    SELECT propertyId, MIN(imageId) AS min_imageId
    FROM images
    GROUP BY propertyId
) i2
    ON i1.propertyId = i2.propertyId AND
       i1.imageId = t2.min_imageId;

09-30 15:18