2014-05-02 83 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子句。