我在 MS Access 中有一个表,基本上如下所示:
Table Name : Customer_Categories
+----------------------+------------+-------+
| Email | CategoryID | Count |
+----------------------+------------+-------+
| jim@example.com | 10 | 4 |
+----------------------+------------+-------+
| jim@example.com | 2 | 1 |
+----------------------+------------+-------+
| simon@example.com | 5 | 2 |
+----------------------+------------+-------+
| steven@example.com | 10 | 16 |
+----------------------+------------+-------+
| steven@example.com | 5 | 3 |
+----------------------+------------+-------+
在这个表中有 ≈ 350,000 条记录。特点是这样的:
- Email、CategoryID 和 Count 的重复值
- 计数是指该客户从该类别订购的次数
我想要的是
我想创建一个表,其中包含一个唯一的电子邮件地址以及该客户最常购买的 CategoryID。
所以上面的例子是:
+----------------------+------------+
| Email | CategoryID |
+----------------------+------------+
| jim@example.com | 10 |
+----------------------+------------+
| simon@example.com | 5 |
+----------------------+------------+
| steven@example.com | 10 |
+----------------------+------------+
我试过的
我写了一个查询来实现我想要的:
SELECT main.Email, (SELECT TOP 1 CategoryID
FROM Customer_Categories
WHERE main.Email = Email
GROUP BY CategoryID
ORDER BY MAX(Count) DESC, CategoryID ASC) AS Category
FROM Customer_Categories AS main
GROUP BY main.Email;
这是一种享受,完全符合我的要求。它会在大约 8 秒内返回结果。但是我需要在一个新表中使用这些数据,因为我想用 categoryID 更新另一个表。当我INTO Customer_Favourite_Categories
在子查询之后添加以将此数据添加到新表中时,而不仅仅是返回结果集并运行查询,它永远不会完成。我已经让它运行了大约 45 分钟,它什么也没做。
有没有办法解决?