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 按最大计数筛选结果(字段)_Mysql - Fatal编程技术网

Mysql 按最大计数筛选结果(字段)

Mysql 按最大计数筛选结果(字段),mysql,Mysql,这是我的疑问 SELECT `mpv`.`member_id` as member_id, `screen_name`, `viewed_url`, count(viewed_url) as viewed_url_cnt FROM (`tracker` mpv) JOIN `members` m ON `mpv`.`member_id`=`m`.`member_id` GROUP BY `viewed_url`, `member_id` 它回来了 +-----------+-----

这是我的疑问

SELECT `mpv`.`member_id` as member_id, `screen_name`, `viewed_url`, 
    count(viewed_url) as viewed_url_cnt
FROM (`tracker` mpv)
JOIN `members` m ON `mpv`.`member_id`=`m`.`member_id`
GROUP BY `viewed_url`, `member_id`
它回来了

+-----------+-------------+------------+----------------+
| member_id | screen_name | viewed_url | viewed_url_cnt |
+-----------+-------------+------------+----------------+
|         1 | admin       | /          |              1 |
|         1 | admin       | /1         |              1 |
|         1 | admin       | /2         |              1 |
|         1 | admin       | 2          |              1 |
|         1 | admin       | 3          |              2 |
|         2 | test        | 4          |              1 |
+-----------+-------------+------------+----------------+
6 rows in set (0.12 sec)
我需要获取所有具有最高
查看的\u url\u cnt
的记录,这些记录按
查看的\u url
成员id
分组。根据上面的结果,我想

+-----------+-------------+------------+----------------+
| member_id | screen_name | viewed_url | viewed_url_cnt |
+-----------+-------------+------------+----------------+
|         1 | admin       | 3          |              2 |
|         2 | test        | 4          |              1 |
+-----------+-------------+------------+----------------+
6 rows in set (0.12 sec)

谢谢

我可能误解了您的要求,但解决方法是使用内部查询来确定每个
成员id
的相应
查看的
,然后
将其加入到您的表中:

SELECT *
FROM my_qry outer
JOIN
(SELECT member_id, MAX(viewed_url_cnt) AS max_cnt
FROM my_qry
GROUP BY member_id) inner 
ON outer.member_id = inner.member_id AND outer.viewed_url_cnt = inner.max_cnt

(此处
my\u qry
是您用于生成原始表的查询。)

我可能误解了您的要求,但解决方法是使用内部查询来确定每个
成员id
的相应
查看的url\u cnt
,然后
将其加入到您的表中:

SELECT *
FROM my_qry outer
JOIN
(SELECT member_id, MAX(viewed_url_cnt) AS max_cnt
FROM my_qry
GROUP BY member_id) inner 
ON outer.member_id = inner.member_id AND outer.viewed_url_cnt = inner.max_cnt

(这里
my_qry
是您用来生成原始表的查询。)

我想以下是可能的:

SELECT * FROM (SELECT * FROM table GROUP BY name) as foo GROUP BY dept
将内部查询替换为您的查询,然后您就可以按成员id获取max(已查看的url)组。

如果失败,请告诉我。

我想以下是可能的:

SELECT * FROM (SELECT * FROM table GROUP BY name) as foo GROUP BY dept
将内部查询替换为您的查询,然后您就可以按成员id获取max(已查看的url)组。
如果失败,请告诉我。

尝试以下操作:

select s1.member_id, s1.screen_name, s1.viewed_url, s1.viewed_url_cnt from (
  select t1.member_id, t1.screen_name, t1.viewed_url, count(*) viewed_url_cnt
  from tracker t1
  group by t1.member_id, t1.screen_name, t1.viewed_url
) as s1
join (
  select s2.member_id, max(viewed_url_cnt) as viewed_url_max from (
    select t1.member_id, count(*) viewed_url_cnt
    from tracker t1
    group by t1.member_id, t1.viewed_url
  ) as s2
  group by s2.member_id
) as s3
on s1.member_id = s3.member_id and s1.viewed_url_cnt = s3.viewed_url_max
试试这个:

select s1.member_id, s1.screen_name, s1.viewed_url, s1.viewed_url_cnt from (
  select t1.member_id, t1.screen_name, t1.viewed_url, count(*) viewed_url_cnt
  from tracker t1
  group by t1.member_id, t1.screen_name, t1.viewed_url
) as s1
join (
  select s2.member_id, max(viewed_url_cnt) as viewed_url_max from (
    select t1.member_id, count(*) viewed_url_cnt
    from tracker t1
    group by t1.member_id, t1.viewed_url
  ) as s2
  group by s2.member_id
) as s3
on s1.member_id = s3.member_id and s1.viewed_url_cnt = s3.viewed_url_max

它没有失败,但我不明白在这种情况下应该把max()放在哪里。Thanksit并没有失败,但我不明白在这种情况下应该把max()放在哪里。谢谢