sql编写自定义查询

mefy6pfw  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(346)

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

story_name | user  | age | reading_counts
-----------|-------|-----|---------------
story 1    | user1 | 4   | 12
story 2    | user2 | 6   | 14
story 4    | user1 | 4   | 15

这是我目前掌握的情况,但我不认为这是正确的:

Select *
From mytable
where (story_name,reading_counts)
IN (Select id, Max(reading_counts)
      FROM mytable
      Group BY user
)
jw5wzhpr

jw5wzhpr1#

SELECT * 
FROM mytable
WHERE user IN
(SELECT user, max(reading_counts)
FROM mytable
GROUP BY user)
imzjd6km

imzjd6km2#

在派生表中,可以首先确定最大值 reading_counts 对于每个用户( Group ByMax() )
现在,只需将这个结果集连接到 user 以及 reading_counts ,以获取最大值对应的行 reading_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

相关问题