2012-04-02 48 views
0

在MYSQL中衡量结果的典型方法是什么?MYSQL称重结果

我有一个名为'category_id'的列从1-10开始的表。

我该如何称量结果,以便更高频率的结果与一个category_id将显示与另一个?

+0

如果你已经想到了'集团BY'然后我不明白你的问题在所有。 – hjpotter92 2012-04-02 19:26:32

+0

你的意思是'ORDER BY'子句? – safarov 2012-04-02 19:26:37

+0

@safarov不,我的意思是GROUP BY。用户需要关于发生频率的结果。 – hjpotter92 2012-04-02 19:28:25

回答

1
select category_id, count(*) 
from table 
group by category_id order by count(*) desc 

假设你使用一个名为table

表要获得的权重像你说的,你可以用两个查询:

set @a := (select count(*) from table); 

select category_id, count(*)/@a from table group by category_id order by count(*) desc; 

也许这是你在找什么:

(select * from table where category_id = 1 order by rand() limit 50) 
union all 
(select * from table where category_id = 2 order by rand() limit 25) 
union all 
(select * from table where category_id = 3 order by rand() limit 25) 

这会给你100行,按50/25/25分割类别IDs 1,2,3。

+0

谢谢Jeffrey。我其实并不是指找到频率。我试图找出一种方法来编写一个会产生一定频率的查询。 – user1124535 2012-04-02 19:35:12

+0

杰夫 - 这给你从结果的权重。 – user1124535 2012-04-02 19:38:13

+0

有没有办法编写它,使25%的结果总是有category_id = 1? – user1124535 2012-04-02 19:38:58

2

如果你想青睐,比如说,5类别,你可以做的东西线:

select id, description 
from your table 
where yourcondition='conditionvalue' 
order by 
    case category 
     when 5 then 0 
     else 1 
    end, 
    category