我在 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 的所有行。
有没有办法在单个查询中做到这一点?
谢谢!
最佳答案
您可以使用 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
关于php - 如果至少有一个属于范围内,如何选择类别中的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12627694/