gpt4 book ai didi

mysql - 使用 EXISTS 通过 IN 编写查询

转载 作者:太空宇宙 更新时间:2023-11-03 10:37:12 25 4
gpt4 key购买 nike

我目前正在学习 SQL,目前我正在尝试使用 INEXISTS 重写一个查询,但似乎没有任何东西能给我正确的答案。问题是:

对于数据库中当前最低(最少星级)的每个评分,返回评论者姓名、电影名称星级 em>.

架构:

  • 电影(mID、标题、年份、导演)

  • 审稿人(rID,姓名)

  • 评级(rID、mID、星级、评级日期)

我的查询是:

Select distinct rew.name, m.title, r.stars
from movie m join rating r on m.mID = r.mID
join reviewer rew on r.rID = rew.rID
where r.stars in (Select min(stars) from rating)

我试图通过将子查询与外部查询连接起来来编写 is with exists。我尝试了所有不同的 key ,但到目前为止没有任何效果。

最佳答案

因此,您首先需要获得每部电影的最低评分,例如:

SELECT mID, MIN(stars) AS stars
FROM rating
GROUP BY mID;

然后,再次将它与rating 表连接起来,以获得评论者id,例如:

SELECT r.rID, a.mID, a.stars
FROM rating r JOIN (
SELECT mID, MIN(stars) AS stars
FROM rating
GROUP BY mID
) a ON r.MID = a.mID and r.stars = a.stars;

现在,您可以将上述查询与 Movie 和 Reviewer 表结合起来以获取标题,例如:

SELECT m.title, re.name, b.stars
FROM movie m JOIN (
SELECT r.rID, a.mID, a.stars
FROM rating r JOIN (
SELECT mID, MIN(stars) AS stars
FROM rating
GROUP BY mID
) a ON r.MID = a.mID and r.stars = a.stars
) b
ON m.mID = b.mID
JOIN reviewer re ON re.rID = b.rID;

关于mysql - 使用 EXISTS 通过 IN 编写查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46022996/

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