Mysql 最有效的写条件的方法
我目前正在完成sqlzoo的教程,并遇到以下代码作为#12的答案:Mysql 最有效的写条件的方法,mysql,sql,Mysql,Sql,我目前正在完成sqlzoo的教程,并遇到以下代码作为#12的答案: 难道没有更简洁的方式来表达这段代码吗 是的。如果我能正确理解这个问题,它会简单得多 SELECT yr,COUNT(title) FROM movie JOIN casting ON movie.id=movieid JOIN actor ON actorid=actor.id WHERE name='John Travolta' GROUP BY yr HAVING COUNT(t
难道没有更简洁的方式来表达这段代码吗 是的。如果我能正确理解这个问题,它会简单得多
SELECT yr,COUNT(title)
FROM movie JOIN casting ON movie.id=movieid
JOIN
actor ON actorid=actor.id
WHERE name='John Travolta'
GROUP BY yr
HAVING COUNT(title) > 2
看起来原始站点的建议答案与他们提出的问题不匹配 对他们提出的问题的最佳答案是:
SELECT yr,COUNT(title) FROM
movie JOIN casting ON movie.id=movieid
JOIN actor ON actorid=actor.id
WHERE name='John Travolta'
GROUP BY yr
HAVING COUNT(title)>2
他们的回答是:
SELECT yr,COUNT(title) FROM
movie JOIN casting ON movie.id=movieid
JOIN actor ON actorid=actor.id
WHERE name='John Travolta'
GROUP BY yr
HAVING COUNT(title)=
(SELECT MAX(c) FROM (SELECT yr,COUNT(title) AS c
FROM movie
JOIN casting ON movie.id=movieid JOIN actor ON actorid=actor.id
WHERE name='John Travolta'
GROUP BY yr) AS t
)
但这实际上回答了一个不同的问题,那就是:“他拍电影最多的那一年是哪一年,他拍了多少部电影?”“他拍了两部以上电影的那一年。”所以
有COUNT(title)>2
SELECT yr,COUNT(title) FROM
movie JOIN casting ON movie.id=movieid
JOIN actor ON actorid=actor.id
WHERE name='John Travolta'
GROUP BY yr
HAVING COUNT(title)=
(SELECT MAX(c) FROM (SELECT yr,COUNT(title) AS c
FROM movie
JOIN casting ON movie.id=movieid JOIN actor ON actorid=actor.id
WHERE name='John Travolta'
GROUP BY yr) AS t