【问题标题】:how to select all within a category if at least one falls within range如果至少有一个在范围内,如何选择一个类别中的所有
【发布时间】:2012-09-19 14:40:47
【问题描述】:

我在 PHP 中使用 MySQL。
我有一个如下所示的 SQL 表:

id | category_id | date
-----------------------------
1  | 3           | 2012-09-12
2  | 4           | 2012-10-25
3  | 3           | 2012-10-12
4  | 3           | 2012-10-02
5  | 4           | 2012-11-03
6  | 3           | 2012-11-02

我试图弄清楚如果至少有一个日期在指定日期范围内,如何选择给定类别的所有日期,否则不选择。
例如:
如果日期范围是 2012 年 9 月 1 日到 2012 年 9 月 31 日,则查询应返回类别 3 的所有行,而类别 4 则不返回任何行。

有没有办法在单个查询中做到这一点?

谢谢!

【问题讨论】:

    标签: php mysql sql lamp


    【解决方案1】:

    您可以使用 join 或 in 子句来执行此操作:

    select t.*
    from t join
         (select distinct category_id
          from t
          where date between <datefrom> and <dateto>
         ) tc
         on t.category_id = tc.category_id
    order by t.category_id, date
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-11
      • 1970-01-01
      • 2022-01-13
      相关资源
      最近更新 更多