首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在多个结果选择中排除未来日期

在多个结果选择中排除未来日期
EN

Stack Overflow用户
提问于 2015-02-23 17:19:45
回答 2查看 536关注 0票数 0

我有两张桌子:

  • 电视节目(包含unique_id和流行指数)
  • 与电视节目有关的电视剧

现在我想做的是:摘取过去一个月至少播出了一集的前十名电视节目(按人气指数计算)(我想得到的是一个趋势列表)。

我要做的是:

代码语言:javascript
复制
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功能,因为有节目,目前正在播出(即使在这个月),但这也将在遥远的将来播出(没有上个月的条件)。

有人能帮我吗?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-23 17:25:40

不如过滤掉WHERE子句中的未来显示:

代码语言:javascript
复制
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语法,尽管您的语法很好用,但它已经被废弃多年了。

票数 3
EN

Stack Overflow用户

发布于 2015-02-23 17:28:07

没有测试,但是像这样的东西应该可以

代码语言:javascript
复制
    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 desc
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28679501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档