我有两张桌子:
现在我想做的是:摘取过去一个月至少播出了一集的前十名电视节目(按人气指数计算)(我想得到的是一个趋势列表)。
我要做的是:
SELECT
tvshows.name,
tvshows.popularity,
MAX(episodes.air_date) as last_air_date
FROM
tvshows,
episodes
WHERE
tvshows.id = episodes.show_id
GROUP BY
tvshows.id
HAVING
last_air_date BETWEEN (CURRENT_DATE() - INTERVAL 1 MONTH) AND CURRENT_DATE()但这并不是因为MAX功能,因为有节目,目前正在播出(即使在这个月),但这也将在遥远的将来播出(没有上个月的条件)。
有人能帮我吗?谢谢。
发布于 2015-02-23 17:25:40
不如过滤掉WHERE子句中的未来显示:
SELECT
tvshows.name,
tvshows.popularity,
MAX(episodes.air_date) as last_air_date
FROM
tvshows
JOIN episodes
ON tvshows.id = episodes.show_id
WHERE episodes.air_date <= CURRENT_DATE()
GROUP BY
tvshows.id
HAVING
last_air_date BETWEEN (CURRENT_DATE() - INTERVAL 1 MONTH) AND CURRENT_DATE()注意,如果您的air_date包括时间,那么比较它与CURRENT_DATE()将排除显示今天午夜后的空气。我还更新了您的JOIN语法,尽管您的语法很好用,但它已经被废弃多年了。
发布于 2015-02-23 17:28:07
没有测试,但是像这样的东西应该可以
SELECT top 10
tvshows.id,
tvshows.name,
tvshows.popularity,
MAX(episodes.air_date) as last_air_date
FROM
tvshows,
episodes
WHERE
tvshows.id = episodes.show_id
and episodes.air_date BETWEEN (CURRENT_DATE() - INTERVAL 1 MONTH) AND CURRENT_DATE()
GROUP BY
tvshows.id,
tvshows.name,
tvshows.popularity
order by popularity deschttps://stackoverflow.com/questions/28679501
复制相似问题