假设我有一张带列的电影租借者表:
我正在尝试实现一个看起来像的输出表:
[UserID, Count of Movies Due in 1 Day, Count of Movies Due in 1 Week]
这可以在一个查询中完成吗?我目前有一个php脚本,可以在1天内运行1个电影查询,另一个查询在1周内运行电影。然后为每个用户ID循环这两个查询,基本上逐个插入表。这有点慢。
通过尝试仅使用1个查询创建此输出,我尝试了类似:
SELECT UserID, count(movieID)
FROM MovieTable
GROUP BY movieID
但是这并没有创建到期日计数列。
是否可以创建一个具有诸如count之类的争论的计数列(//所有满足Rent_Due_Date - CURDATE() < ONE_WEEK
的地方?)
答案 0 :(得分:3)
您需要按用户对结果进行分组,而不是按电影分组:
SELECT UserID,
SUM(Rent_Due_Date BETWEEN CURRENT_DATE AND CURRENT_DATE + INTERVAL 1 DAY),
COUNT(*)
FROM MovieTable
WHERE Rent_Due_Date BETWEEN CURRENT_DATE AND CURRENT_DATE + INTERVAL 1 WEEK
GROUP BY UserID