6

我有两张桌子。这是一个简化的细分:

Table #1 - Album:
Rows:
albumId | title | userId

Table #2 - Photo:
Rows:
photoId | src | albumId

我想从每个相册中获取第一张照片的 src。这显然不是我想要的,但这是我所拥有的:

SELECT pa.id, pa.title, p.src
FROM Album pa
LEFT JOIN Photo p ON pa.Id = p.albumId
WHERE pa.userId = 1

这将返回用户的所有照片。我想要这些结果中每张专辑的第一个结果。

4

4 回答 4

3

正如@zerkms 所说,我认为您可能想要添加一个cover_photo_id,但这可以解决问题(不知道使用子查询对于您的情况是否足够有效)

SELECT pa.albumId, pa.title, p.src
FROM Album pa
LEFT JOIN Photo p 
  ON p.photoId = (SELECT MIN(photoId) FROM Photo WHERE albumId = pa.albumId)
WHERE pa.userId = 1
于 2012-04-09T23:47:37.430 回答
0
SELECT pa.id, pa.title, p.src
FROM Album pa
  LEFT JOIN Photo p ON pa.Id = p.albumId
WHERE pa.userId = 1 LIMIT 1;
于 2012-04-09T23:48:19.440 回答
-1

您想使用 GROUP BY

SELECT pa.id, pa.title, p.src
FROM Album pa
LEFT JOIN Photo p ON pa.Id = p.albumId
WHERE pa.userId = 1
GROUP BY pa.id, pa.title

如果您实际上想要相当于 FIRST,请参阅此答案

于 2012-04-09T23:49:34.760 回答
-2
SELECT pa.id, pa.title, p.src
FROM Album pa
LEFT JOIN Photo p ON pa.Id = p.albumId
WHERE pa.userId = 1
GROUP BY pa.albumId
ORDER BY p.photoID
于 2012-04-10T00:01:37.870 回答