请考虑以下表结构(这是示例数据,因此请忽略相同的时间戳):
+---------+---------+------------+-----------+
| list_id | item_id | date_added | is_active |
+---------+---------+------------+-----------+
| 1 | 1 | 1352073600 | 1 |
| 1 | 2 | 1372073600 | 1 |
| 1 | 3 | 1332073600 | 1 |
| 1 | 4 | 1302073600 | 1 |
| 2 | 1 | 1302073600 | 1 |
| 3 | 1 | 1302073600 | 1 |
+---------+---------+------------+-----------+
我们的客户希望显示在某一天创建了多少列表。该列表是在添加第一个项目时创建的,但没有明确存储日期,只有添加项目的日期。
我的问题是这样的:
使用 MySQL(和用于计算时间戳的 PHP),我如何返回在某一天创建的列表的数量。本质上,逻辑应该是(伪代码):
- 从>= min_age 和<= max_age
tbl_list_items
中选择总记录,并且该列表的记录最旧date_added
date_added
很难解释我在寻找什么,因此请考虑以下操作:
No items added to lists yet (i.e. all lists have 0 items)
User added `item_id = 1` to `list_id = 1` yesterday.
User added `item_id = 2` to `list_id = 1` today.
User added `item_id = 1` to `list_id = 2` yesterday.
User added `item_id = 1` to `list_id = 3` yesterday.
User added `item_id = 2` to `list_id = 2` today.
如果我们想查看昨天创建了多少列表(或者更确切地说,昨天添加了第一个项目的列表有多少),我想返回第一次添加的项目的总数 = 昨天。鉴于上面设置的操作,这将返回总共 3 个(即list_id = 1
和list_id = 2
)list_id = 3
。