2010-04-03 104 views
1

我有这个疑问:MySQL的 - 有出现次数最少数量的选择行

SELECT DISTINCT brand_name FROM masterdata WHERE in_stock = '1' ORDER BY brand_name 

它运作良好,但我得到了太多的结果。我如何限制这种情况,而不是仅仅寻找不同的条目,它只会给我至少3次(例如)的不同条目?

基本上,如果列有此数据...

brand_name 
========== 
apple 
banana 
apple 
apple 
orange 
banana 
orange 
orange 

...我目前的查询将返回 “苹果,香蕉,橘子”。我如何得到它,使它只返回“苹果,橙色”(忽略香蕉,因为它少于三次出现)?

我使用PHP构建查询,如果它很重要。

谢谢!

回答

3

像这样的东西(现成的,袖口和未经测试):

SELECT brand_name 
    FROM masterdata 
WHERE in_stock = '1' 
GROUP BY brand_name 
HAVING COUNT(*) >= 3 
ORDER BY brand_name 
+0

这是非常好的 - 它的作品,谢谢!还有一个问题,如果你会这么友好的话:如果我想以最高的频率显示brand_name中的前15个条目,但按字母顺序(而不是按频率)排序,我的查询会是什么? 所以现在,我没有定义出现次数的最小值,而是定义了出现次数最多的前15个入口。 – 2010-04-03 10:34:43

+0

@RC:这应该是一个新问题。 – outis 2010-04-03 10:58:21

相关问题