Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL检索用户活动,其中同一用户id最多可出现3次_Mysql_Sql - Fatal编程技术网

MYSQL检索用户活动,其中同一用户id最多可出现3次

MYSQL检索用户活动,其中同一用户id最多可出现3次,mysql,sql,Mysql,Sql,我正在从用户活动表中检索行,如下所示 SELECT user_id, type, source_id FROM activity ORDER BY date DESC LIMIT 5 但是我不希望活动提要被同一个用户阻塞,所以我希望能够从包含相同用户id的5行中检索最多3行 你知道我该怎么做吗?谢谢:这里有一种传统的方法,您首先枚举用户ID并将此信息用作筛选器: SELECT user_id, type, source_id FROM (select a.*, @rn

我正在从用户活动表中检索行,如下所示

SELECT user_id, type, source_id FROM activity ORDER BY date DESC LIMIT 5
但是我不希望活动提要被同一个用户阻塞,所以我希望能够从包含相同用户id的5行中检索最多3行


你知道我该怎么做吗?谢谢:

这里有一种传统的方法,您首先枚举用户ID并将此信息用作筛选器:

SELECT user_id, type, source_id
FROM (select a.*,
             @rn := if (@user_id = user_id, @rn + 1, 1) as rn,
             @user_id := user_id
      from activity a cross join
           (select @rn := 0, @user_id := -1) const
      order by user_id
     ) a
WHERE rn <= 3
ORDER BY date DESC
LIMIT 5;
您可以尝试以下方法:-

SELECT user_id, type, source_id
FROM activity
WHERE 3 > (
SELECT count( * )
FROM activity AS activity1
WHERE activity .user_id = activity1.user_id
AND activity.user_id > activity1.user_id)
ORDER BY activity.user_id DESC
LIMIT 5

如果我理解的很好,您希望每个用户id最多3行?您所说的被同一用户阻塞是什么意思?