0

我在 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-09-01 到 2012-09-31,则查询应返回类别 3 的所有行,而类别 4 则不返回任何行。

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

谢谢!

4

1 回答 1

2

您可以使用 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
于 2012-09-27T18:19:51.837 回答