gpt4 book ai didi

MYSQL、Max、Group by 和 Max

转载 作者:行者123 更新时间:2023-11-29 05:30:11 25 4
gpt4 key购买 nike

我有以下两个表。

1.电影详情(电影ID、电影名称、评分、票数、年份)

2.电影类型(Movie-ID,Genre)

我正在使用以下查询来执行连接并获得每个评分最高的电影流派。

select Movie_Name, 
max(Rating) as Rating,
Genre from movie_test
inner join movie_genre
where movie_test.Movie_ID = movie_genre.Movie_ID
group by Genre

输出中的 Rating 和 Genre 是正确的,但 Movie_Name 不正确。

任何人都可以建议我应该进行哪些更改以获得正确的电影名称以及评级和类型。

最佳答案

SELECT  g.*, d.*
FROM MovieGenre g
INNER JOIN MovieDetail d
ON g.MovieID = d.MovieID
INNER JOIN
(
SELECT a.Genre, MAX(b.Rating) maxRating
FROM MovieGenre a
INNER JOIN MovieDetail b
ON a.MovieID = b.MovieID
GROUP BY a.Genre
) sub ON g.Genre = sub.Genre AND
d.rating = sub.maxRating

您的架构设计有问题。如果一个 Movie 可以有多个 Genre 并且 Genre 可以包含在多个 Movie 上,它应该是三表设计。

电影详情表

  • 电影 ID(PK)
  • 电影名
  • 电影评级

类型表

  • 流派 ID(PK)
  • 流派名称

Movie_Genre 表

  • MovieID (FK) -- 与 GenreID 的复合主键
  • 流派 ID(FK)

关于MYSQL、Max、Group by 和 Max,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15679857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com