【发布时间】:2012-02-12 08:51:30
【问题描述】:
我有一个要优化的查询。我确信这个查询可以改进。
查询的结果应该返回 filter_id 为 22 和 2 并且显示为“是”的产品的数量。
SELECT COUNT(product_id) AS Total
FROM kkx_filters_products
LEFT JOIN kkx_products ON product_id = kkx_products.id
WHERE filter_id IN (2,22)
AND kkx_products.display = 'yes'
GROUP BY product_id
HAVING count(product_id) = 2
上述查询返回 10230 条记录,每条记录的字段为 Total,值为 2。
我想要一个字段为 Total 且值为 10230 的结果。
我已经包含了查询中使用的表的结构。
解释 kkx_filters;
Field Type Null Key Default Extra
id int(11) unsigned NO PRI NULL auto_increment
name varchar(50) NO
解释 kkx_filters_products;
Field Type Null Key Default Extra
filter_id int(11) NO PRI 0
product_id int(11) NO PRI 0
解释 kkx_products;
Field Type Null Key Default Extra
id int(11) NO PRI NULL auto_increment
title varchar(255) NO
display enum('yes','no') NO yes
【问题讨论】:
-
... the count as rows... one result with the result...嗯? -
"应该返回 filter_id 为 22 和 2"的产品数量,但
HAVING count( product_id ) = 1表示 22 或 2. 是哪一个? -
对不起,我的问题表述得更清楚了
标签: mysql optimization count