WOW!這是一個奇怪的標題,但我很高興你看,因爲我找不到另一種說法。mysql只爲加入查詢中的不同值計數
我有一個人的桌子和一張照片和視頻鏈接表。 我把人們加入媒體,當然一個人可以有多個媒體。
我試圖抓住一個查詢中的前30個人和他們所有的媒體,但是當我說限制0,30。當然,我只會得到前30個媒體文件,可能是10個人。
在進行查詢之前,我不知道每個人有多少媒體文件。有沒有辦法可以說LIMIT DISTINCT(uid 0,30)?
或類似的東西?
WOW!這是一個奇怪的標題,但我很高興你看,因爲我找不到另一種說法。mysql只爲加入查詢中的不同值計數
我有一個人的桌子和一張照片和視頻鏈接表。 我把人們加入媒體,當然一個人可以有多個媒體。
我試圖抓住一個查詢中的前30個人和他們所有的媒體,但是當我說限制0,30。當然,我只會得到前30個媒體文件,可能是10個人。
在進行查詢之前,我不知道每個人有多少媒體文件。有沒有辦法可以說LIMIT DISTINCT(uid 0,30)?
或類似的東西?
你可以在你的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
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個用戶。
這是如果你可以使用子查詢的方式。好的答案AviewAnew。 – 2009-02-03 20:16:47