是否有比我快的解决方案?
我有一个包含orders_id和products_id列表的表(不能更改)
现在我想知道使用独特的products_id订购了多少订单。
我尝试了以下内容。但是在加载太多行(160'000)时崩溃了。
SELECT DISTINCT `products_id` , `products_name` , COUNT(*) as totalorders FROM `orders_products` ORDER BY `products_id` ASC
我也试过子查询,但问题和上面一样。
SELECT (SELECT count(*) FROM orders_products WHERE products_id = op.products_id) AS totalorders, products_id, products_name FROM orders_products op ORDER BY products_id ASC
答案 0 :(得分:0)
怎么样:
SELECT `products_id`, `products_name`, COUNT(*) FROM `orders_products` GROUP BY (`products_id`, `products_name`) ORDER BY `products_id`
答案 1 :(得分:0)
希望你有关于products_id的索引
在这种情况下,我会尝试以下内容:
选择products_id,Min(Products_Name),count(*)作为TotalOrders 来自订单_产品 按产品分组_ID 按产品订购_ID asc
您可以通过其他几种方式获取products_name,例如将其包含在您的分组中(其他一些含义)。