php - 如果至少有一个属于范围内,如何选择类别中的所有内容

标签 php mysql sql lamp

我在 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/

相关文章:

mysql - 是否仅通过事务对数据库进行更改?

php - 多个特征同时使用相同的基本特征

php - Google Translate 翻译内联 Javascript 代码

php - 使用 CodeIgniter 在子文件夹中路由 Controller

sql - 为什么 PL/pgSQL 函数可以有副作用,而 SQL 函数不能?

sql - 如何获得可链接的标签?

php - PDO : update mysql `date` column from (d/m/y) to timestamp

mysql - 获取前几年同一天的信息

python - 在Python中读取分隔文本文件

mysql - MySQL中按位置排序,多个产品分配到一个位置