2014-05-02 84 views
0

请看下面的查询。根据条件检索值

SELECT `p_id`, COUNT(`p_id`) AS OverlapWords, `UniqueWordCount`, 
(COUNT(`p_id`)/`UniqueWordCount`) AS SimScore FROM `key_uniqueword` WHERE `word` IN 
('stand','on') GROUP BY (`p_id`) LIMIT 500 

我需要将SimScore转换成百分比,并得到所有的记录,其中SimScore小于90%。我怎样才能在SQL中做到这一点?最后一次当我这样做,它给我带来了一个类似于如下错误:Invalid use of Group function

回答

1

你试过吗?

SELECT `p_id`, COUNT(`p_id`) AS OverlapWords, `UniqueWordCount`, 
     (COUNT(`p_id`)/`UniqueWordCount`) AS SimScore 
FROM `key_uniqueword` 
WHERE `word` IN ('stand','on') 
GROUP BY (`p_id`) 
HAVING SimScore < 0.9 
LIMIT 500; 

条件对聚合函数的结果所属的having条款,而不是where子句。