在MYSQL中衡量结果的典型方法是什么?MYSQL称重结果
我有一个名为'category_id'的列从1-10开始的表。
我该如何称量结果,以便更高频率的结果与一个category_id将显示与另一个?
在MYSQL中衡量结果的典型方法是什么?MYSQL称重结果
我有一个名为'category_id'的列从1-10开始的表。
我该如何称量结果,以便更高频率的结果与一个category_id将显示与另一个?
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。
谢谢Jeffrey。我其实并不是指找到频率。我试图找出一种方法来编写一个会产生一定频率的查询。 – user1124535 2012-04-02 19:35:12
杰夫 - 这给你从结果的权重。 – user1124535 2012-04-02 19:38:13
有没有办法编写它,使25%的结果总是有category_id = 1? – user1124535 2012-04-02 19:38:58
如果你想青睐,比如说,5
类别,你可以做的东西线:
select id, description
from your table
where yourcondition='conditionvalue'
order by
case category
when 5 then 0
else 1
end,
category
如果你已经想到了'集团BY'然后我不明白你的问题在所有。 – hjpotter92 2012-04-02 19:26:32
你的意思是'ORDER BY'子句? – safarov 2012-04-02 19:26:37
@safarov不,我的意思是GROUP BY。用户需要关于发生频率的结果。 – hjpotter92 2012-04-02 19:28:25