2009-06-30 18 views
0

我試圖做一個選擇語句,它的工作原理,只不過它不是限制的結果爲每個用戶(U.id)的數量爲5MYSQL select語句 - 從每個用戶5個結果

SELECT F.id,F.created,U.username,U.fullname,U.id,I.id,I.cached_image 
FROM favorites AS F 
INNER JOIN users AS U 
ON F.faver_profile_id = U.id 
INNER JOIN items AS I 
ON F.notice_id = I.id 
WHERE faver_profile_id IN ('.$users.') 
GROUP BY I.id HAVING COUNT(U.id) <= 5 
ORDER BY F.faver_profile_id, F.created DESC 

我正在通過I.id進行分組以消除重複項。從我的研究看來,如果您也可以使用HAVING COUNT,那麼您也可以使用該列進行分組,但我無法通過U.id進行分組,或者我會失去結果行。

回答

1

而不是HAVING,你可以在那裏拍一個LIMIT 5

編輯: OP不能LIMIT整個查詢,
和,據我所知,MySQL的不支持子查詢LIMIT
這樣你就可以創建臨時表與你的五(5)用戶ID:

create table temp_table (id INT); 
insert into temp_table (id) SELECT U.id FROM users U LIMIT 5; 

SELECT F.id,F.created,U.username,U.fullname,U.id,I.id,I.cached_image 
FROM favorites AS F 
     INNER JOIN temp_table AS Ut 
     ON F.faver_profile_id = Ut.id 
     INNER JOIN items AS I 
     ON F.notice_id = I.id 
WHERE faver_profile_id IN ('.$users.') 
GROUP BY I.id 
ORDER BY F.faver_profile_id, F.created DESC; 

drop table temp_Table; 

讓我們知道這是如何工作的。

+0

不,據我所知LIMIT只能應用於完整查詢。 – makeee 2009-06-30 05:34:33