gpt4 book ai didi

mysql - 聚合函数如何影响与其一起查询的列?

转载 作者:搜寻专家 更新时间:2023-10-30 20:25:41 24 4
gpt4 key购买 nike

我有 2 个表:-

Movies(movieID,movieTitle,Director)

Rating(ratingID,movieID,movieRating,ratingDate)

现在我编写以下语法来查询这些表 -

SELECT movieTitle,max(movieRating)
FROM Movie M,Rating R
WHERE R.movieID = M.movieID
GROUPBY R.movieID;

我想问的是:

前提是对于由 movieID 形成的每个子组我有一个独特的max(movieRating)值(value)我只得到一排 movieTitlemax(movieRating)对于每个 movieID子组。我不应该得到许多重复的 movieTitle 行吗?和 max(movieRating)有多少次movieTitle条目存在于表中?

让我用一个例子来说明我的疑问-

假设我的条目如下(我只包含了相关的条目):

movieID  movieTitle movieRating
1 Lost Stars 3
1 Lost Stars 4
1 Lost Stars 5

当我对这些值运行查询时,我得到
Lost Stars 5
作为答案。即该行仅作为答案返回一次。

我不应该得到-
Lost Stars 5
Lost Stars 5
Lost Stars 5
作为答案。
那我不应该得到 3 次值吗(每次表中都存在一个 Lost Stars 条目)?

您能解释一下为什么它以这种方式工作吗?

我是 SQL 的新手,如果这是一个非常基本的疑问,我深表歉意。如果能得到任何帮助,我将不胜感激。

最佳答案

GROUP BY 将对记录进行分组并返回不同的值。在您的情况下,所有记录都共享相同的电影名称和 ID。唯一不同的值是评分,您请求的是最大值,而不是与每条记录关联的实际评分。

将您的结果与以下结果进行比较:

SELECT R.movieTitle,M.movieRating,max(M.movieRating) 
FROM Movie M,Rating R
WHERE R.movieID = M.movieID
GROUP BY R.movieID, R.movieTitle, M.movieRating;

注意:您必须按 select 子句中不是聚合的任何字段进行分组,因此如果您选择它,则必须按 movieTitle 进行分组。

该查询的结果将为您提供所有 3 条记录,因为它选择的 movieRating 值在所有记录上都不同。

关于mysql - 聚合函数如何影响与其一起查询的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35158981/

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