组和子查询问题
Posted
技术标签:
【中文标题】组和子查询问题【英文标题】:Group and subquery issue 【发布时间】:2021-03-14 22:22:42 【问题描述】:这是我的示例数据
CREATE TABLE customer1
(
rating int(9),
genre varchar(100),
title varchar(100)
);
INSERT INTO customer1 (rating, genre, title)
VALUES
(2, 'A', 'abc'),
(4, 'A', 'abc1'),
(2, 'B', 'abc2'),
(3, 'B', 'abc3'),
(2, 'C', 'abc4'),
(5, 'C', 'abc5');
我需要在每种类型中找到评分最高的标题。
感谢您的帮助。
【问题讨论】:
打成平手怎么办? 【参考方案1】:一个选项使用子查询进行过滤:
select c.*
from customer1
where c.rating = (select max(c1.rating) from customer1 c1 where c1.genre = c.genre)
这将利用(genre, rating)
上的索引。
在 mysql 8.0 中,还可以使用窗口函数:
select *
from (
select c.*,
rank() over(partition by genre order by rating desc) rn
from customer1 c
) c
where rn = 1
【讨论】:
以上是关于组和子查询问题的主要内容,如果未能解决你的问题,请参考以下文章