【问题标题】:MYSQL select statement - 5 results from each userMYSQL 选择语句 - 每个用户 5 个结果
【发布时间】:2009-06-30 04:56:03
【问题描述】:

我正在尝试执行一个 select 语句,它可以正常工作,只是它不会将每个用户 (U.id) 的结果数限制为 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 分组,否则我会丢失结果行。

【问题讨论】:

    标签: mysql select


    【解决方案1】:

    你能在里面打一个LIMIT 5而不是HAVING吗?

    编辑: OP 不能LIMIT 整个查询,
    而且,AFAIK,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;
    

    让我们知道它是如何工作的。

    【讨论】:

    • 不,据我所知 LIMIT 只能应用于完整查询。
    猜你喜欢
    • 2021-08-04
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 2019-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多