[英]Select a specific record in a group of records for all groups of records in MySQL
[英]SELECT newest record of any GROUP of records (ignoring records with one record)
查询返回具有超过 1 个订单的任何分组订单的最新订单时遇到问题。 测试数据的 CREATE & INSERTs 如下。
此查询返回我要使用的唯一客户 ID,以及分组的 order_id。 在这些记录中,我只需要最近的订单(基于 date_add)。
SELECT COUNT(customer_id), customer_id, GROUP_CONCAT(order_id) FROM orderTable GROUP BY customer_id HAVING COUNT(customer_id)>1 LIMIT 10;
mysql> SELECT COUNT(customer_id), customer_id, GROUP_CONCAT(order_id) FROM orderTable GROUP BY customer_id HAVING COUNT(customer_id)>1 LIMIT 10;
+--------------------+-------------+------------------------+
| COUNT(customer_id) | customer_id | GROUP_CONCAT(order_id) |
+--------------------+-------------+------------------------+
| 2 | 0487 | F9,Z33 |
| 3 | 1234 | 3A,5A,88B |
+--------------------+-------------+------------------------+
2 rows in set (0.00 sec)
我正在寻找订单 Z33 (customer_id 0487) 和 3A (customer_id 1234)。
为了澄清起见,我不希望只订购一次的客户下订单。
任何帮助或提示让我指出正确的方向表示赞赏。
--
orderTable
的表结构 CREATE TABLE IF NOT EXISTS orderTable
( customer_id
varchar(10) NOT NULL, order_id
varchar(4) NOT NULL, date_added
date NOT NULL, PRIMARY KEY ( customer_id
, order_id
) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
orderTable
转储数据 INSERT INTO orderTable
( customer_id
, order_id
, date_added
) VALUES ('1234', '5A', '1997-01-22'), ('1234', '88B', '1992-05-09'), ('0487 ', 'F9', '2002-01-23'), ('5799', 'A12F', '2007-01-23'), ('1234', '3A', '2009-01-22') , ('3333', '7FHS', '2009-01-22'), ('0487', 'Z33', '2004-06-23');
==================================================== ========
澄清查询。 问题是只包括那些拥有更多的客户......因此我的查询将它与 GROUP BY 放在一起......这样它只会给有问题的客户提供多个订单,但同时只给出该人的最后一个订单的最近日期... 然后 PreQuery 通过公共客户 ID 重新连接到订单表,但仅适用于与预查询中检测到的最后一个日期匹配的订单。 如果客户只有一个订单,其内部 PreQuery 计数将仅为 1,因此会从最终 PreQuery 结果集中排除。
select ot.*
from
( select
customer_id,
max( date_added ) as LastOrderDate,
from
orderTable
having
count(*) > 1
group by
customer_id ) PreQuery
join orderTable ot
on PreQuery.Customer_ID = ot.Customer_ID
and PreQuery.LastOrderDate = ot.date_added
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.