2009-02-03 54 views
1

WOW!這是一個奇怪的標題,但我很高興你看,因爲我找不到另一種說法。mysql只爲加入查詢中的不同值計數

我有一個人的桌子和一張照片和視頻鏈接表。 我把人們加入媒體,當然一個人可以有多個媒體。

我試圖抓住一個查詢中的前30個人和他們所有的媒體,但是當我說限制0,30。當然,我只會得到前30個媒體文件,可能是10個人。

在進行查詢之前,我不知道每個人有多少媒體文件。有沒有辦法可以說LIMIT DISTINCT(uid 0,30)?

或類似的東西?

回答

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 
+0

這是如果你可以使用子查詢的方式。好的答案AviewAnew。 – 2009-02-03 20:16:47

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個用戶。