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