1

哇!这是一个奇怪的标题,但我很高兴你在看,因为我找不到另一种说法。

我有一张人员表和一张照片和视频链接表。我把人们加入媒体,当然一个人可以拥有不止一种媒体。

我试图在一个查询中获取前 30 个人及其所有媒体,但是当我说 LIMIT 0,30 时。当然,我只会得到前 30 个媒体文件,可能是 10 个人。

在我进行查询之前,我不知道每个人将拥有多少媒体文件。有没有办法我可以说 LIMIT DISTINCT(uid 0,30)????

或类似的东西?

4

2 回答 2

4

你可以在你的 MySQL 版本中使用子查询吗?

select *
from media m
inner join
     ( select uid
     from users_tbl
     limit 0,30) map
  on map.uid = m.uid
inner join users_tbl u
  on u.uid = m.uid
于 2009-02-03T20:13:35.560 回答
1

FWIW,这是另一个应该返回相同结果的查询:

SELECT *
FROM media m INNER JOIN users_tbl u USING (uid)
WHERE u.uid IN (SELECT uid FROM users_tbl ORDER BY uid LIMIT 0,30);

请注意,当您使用 时LIMIT,您应该始终使用ORDER BY. 否则无法保证您将获得哪30 个用户。

于 2009-02-03T22:15:39.463 回答