mysql-如何从子查询中获得第一个结果?

kam*_*tka 5 mysql sql

我有两张桌子。以下是简化的细分:

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

Table #2 - Photo:
Rows:
photoId | src | albumId
Run Code Online (Sandbox Code Playgroud)

我想从每张专辑中获取第一张照片的src。这显然不是我想要的,但是这里是我拥有的:

SELECT pa.id, pa.title, p.src
FROM Album pa
LEFT JOIN Photo p ON pa.Id = p.albumId
WHERE pa.userId = 1
Run Code Online (Sandbox Code Playgroud)

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

g3r*_*rv4 3

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

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
Run Code Online (Sandbox Code Playgroud)

  • 你最好把这个条件放在“ON”部分 (2认同)