Php 打印每个产品的订单数量\u id
有比我更快的解决方案吗 我有一个包含orders\u id和products\u id列的表(无法更改) 现在我想知道有多少订单是用独特的产品制作的 我尝试了以下方法。但它在加载太多行(160000行)时崩溃 我也尝试使用子查询,但问题与上面相同Php 打印每个产品的订单数量\u id,php,sql,count,Php,Sql,Count,有比我更快的解决方案吗 我有一个包含orders\u id和products\u id列的表(无法更改) 现在我想知道有多少订单是用独特的产品制作的 我尝试了以下方法。但它在加载太多行(160000行)时崩溃 我也尝试使用子查询,但问题与上面相同 SELECT (SELECT count(*) FROM orders_products WHERE products_id = op.products_id) AS totalorders, products_id, products_nam
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
那么:
SELECT `products_id`, `products_name`, COUNT(*) FROM `orders_products` GROUP BY (`products_id`, `products_name`) ORDER BY `products_id`
希望你有一个关于产品的索引 在这种情况下,我会尝试以下方法: 选择products\u id、Min(products\u Name)、count(*)作为TotalOrders 从订单到产品 按产品分组\u ID 按产品订购\u ID asc
有几种其他方法可以获取产品名称,例如将其包含在分组中(还有一些其他含义)。为什么不使用
分组依据?如果这是MySQL,请发布EXPLAIN
输出。因为您是在产品id上聚合,所以需要在产品名称上使用聚合函数,或者需要将其包含在分组中。@TDrudge nice spot。更正了答案。谢谢。
SELECT `products_id`, `products_name`, COUNT(*) FROM `orders_products` GROUP BY (`products_id`, `products_name`) ORDER BY `products_id`