[英]SQL count query based on date
我正在尝试在 mysql 中执行计数查询,以使用另一个表( orders
)中的数据更新我的users
表中的列( no_of_orders
)。
我要对其执行查询的表是具有日期时间格式的created_date
列的orders
表。
我想计算每个用户在过去 3 个月中的订单数量。
我尝试了以下方法,但收到错误“操作数应仅包含一列”。
UPDATE users u SET no_of_orders = (
SELECT EXTRACT(month from created_date)>= NOW() - INTERVAL 3 MONTH ,
COUNT(*)
FROM orders o
WHERE o.created_by = u.user_id);
有一个更好的方法吗?
谢谢!
LEFT
将表users
连接到在表中聚合的查询orders
:
UPDATE users u
LEFT JOIN (
SELECT created_by, COUNT(*) count
FROM orders
WHERE created_date >= NOW() - INTERVAL 3 MONTH
GROUP BY created_by
) o ON o.created_by = u.user_id
SET u.no_of_orders = COALESCE(o.count, 0);
UPDATE users u SET no_of_orders = (
SELECT COUNT(*)
FROM orders o
WHERE o.created_by = u.user_id AND EXTRACT(month from o.created_date)>= NOW() - INTERVAL 3 MONTH ) GROUP BY o.created_by;
在子查询中,您返回的列不止一列,这就是错误的原因
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.