繁体   English   中英

基于日期的 SQL 计数查询

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM