Mysql SQL编写自定义查询

Mysql SQL编写自定义查询,mysql,sql,sql-query-store,Mysql,Sql,Sql Query Store,我需要编写一个SQL查询,为每个用户生成最流行的故事的名称(根据总阅读计数)。以下是一些示例数据: story_name | user | age | reading_counts -----------|-------|-----|--------------- story 1 | user1 | 4 | 12 story 2 | user2 | 6 | 14 story 4 | user1 | 4 | 15 在a中,您可以首先确定每个用户的最大读取计数(分组

我需要编写一个SQL查询,为每个用户生成最流行的故事的名称(根据总阅读计数)。以下是一些示例数据:

story_name | user | age | reading_counts -----------|-------|-----|--------------- story 1 | user1 | 4 | 12 story 2 | user2 | 6 | 14 story 4 | user1 | 4 | 15
  • 在a中,您可以首先确定每个用户的最大
    读取计数
    分组依据
    with)
  • 现在,只需将此结果集连接到
    user
    reading\u counts
    上的主表,即可获得与用户的最大
    reading\u counts
    对应的行
请尝试以下查询:

SELECT 
  t1.* 
FROM mytable AS t1 
JOIN 
(
  SELECT t2.user, 
         MAX(t2.reading_counts) AS max_count 
  FROM mytable AS t2
  GROUP BY t2.user 
) AS dt 
  ON dt.user = t1.user AND 
     dt.max_count = t1.reading_counts 

提示:Order by应仅使用Order by。。保持简单..你的查询有什么问题?有任何特定的错误消息吗?意外的行为?你能描述一下你观察到的确切行为和你的期望吗?请编辑问题,提供一个相关的、最少的样本数据,展示你的需求和期望的输出。不要使用图像;提供格式化文本。关于如何构建一个好的SQL问题,请参考此链接:这不是输入到数据库中以找到答案。所以我真的不能检查它。我主要担心的是,我不知道问题是要求我只生成每个用户阅读次数最大的名称,还是生成每个用户的所有故事名称,并按最大阅读次数排序最后一行是否为dt.Max_count=t1.reading_counts,因为在派生表(dt)中定义了最大次数@KlaidiZiaj这是个打字错误。谢谢你发现了。只有固定代码的答案是不好的。请给答案加上一些解释,这是错误的。但对于一个显然在寻找家庭作业答案的人来说,这个答案似乎很合适。
SELECT * 
FROM mytable
WHERE user IN
(SELECT user, max(reading_counts)
FROM mytable
GROUP BY user)
SELECT 
  t1.* 
FROM mytable AS t1 
JOIN 
(
  SELECT t2.user, 
         MAX(t2.reading_counts) AS max_count 
  FROM mytable AS t2
  GROUP BY t2.user 
) AS dt 
  ON dt.user = t1.user AND 
     dt.max_count = t1.reading_counts