MySQL查询中对SUM函数的约束

| 我正在开发MySQL中的基本搜索引擎。搜索基于关键字,并且每个可搜索项都具有与之关联的多个关键字。每个关键字都有一个与之相关的权重,以确定关键字对商品的“重要程度”。这些表如下所示:
== table: keyword_item ==      
column: item_id (int)
column: keyword (varchar)
column: weight (float)

== table: item ==
column: id (int)
column: title (varchar)
column: url (varchar)
我想做的是过滤掉权重较大的项目,并尝试了以下查询:
SELECT item_id, title, url, sum(weight) as w FROM keyword_item INNER JOIN item ON (w > 3 AND (keyword = \'key1\' OR keyword = \'key2\' OR keyword = \'key3\' ) AND item_id = id) GROUP BY item_id ORDER BY w DESC
但这给了我错误:
#1054 - Unknown column \'w\' in \'on clause\'
我还尝试将ON子句中的\“ w> 3 \”更改为\“ sum(weight)> 3 \”,但是这给了我错误:
#1111 - Invalid use of group function
现在,我对MySQL的了解并不多,我敢肯定,为什么它无法正常工作,这是一个很好的解释,但我想知道是否有一种方法可以实现我的目标想。 谢谢!     
已邀请:
        我会使用
WHERE
HAVING
子句,而不是将所有内容都放在
ON
中。
SELECT item_id, title, url, sum(weight) as w
FROM keyword_item INNER JOIN item ON item_id = id
WHERE (keyword = \'key1\' OR keyword = \'key2\' OR keyword = \'key3\')
GROUP BY item_id
HAVING w > 3
ORDER BY w DESC
    
        尝试使用
HAVING
SELECT item_id, title, url, sum(weight) as w 
FROM keyword_item 
INNER JOIN item ON item_id = id
WHERE  keyword in (\'key1\', \'key2\', \'key3\' )
GROUP BY item_id, title, url
HAVING sum(weight) > 3 
ORDER BY w DESC
    

要回复问题请先登录注册