2009-06-30 19 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