我有两张tablet1和t2。t1包含一些消息数据,我已经设置好要对t2进行搜索,t2包含一个关键字列表,所有关键字都有自己的得分。现在,我已经取得了一定的成功,并且成功地通过这个查询返回了t1中包含t2中任何关键字的所有行
SELECT DISTINCT t1.RowID, t1.ChatNo, t1.UserNo,
t1.Chat, t2.Keywords, SUM(t2.KeywordScore) AS Score
FROM t1
LEFT JOIN t2 ON t1.Chat LIKE CONCAT('%', + t2.Keywords , + '%')
WHERE t2.Keywords IS NOT NULL OR t1.ChatNo > 0 AND t1.UserNo > 0
GROUP BY t1.RowID, t2.Keywords
现在我的问题是,它返回重复的结果,如果一个聊天信息有多个关键字,在每一个重复的行,它会拿起一个不同的关键字,关键字得分。现在正因为如此,我相信我的查询试图单独地对行求和,所以无法对它们求和(如果我错了,请纠正我)。例如:
RowID ChatNo UserNO Chat Keywords Score
1 1 1 "...ex1 ex2 ex3" ex1 2
1 1 1 "...ex1 ex2 ex3" ex2 4
1 1 1 "...ex1 ex2 ex3" ex3 1
现在,我想让它返回在一行(或列表)上的消息中找到的所有关键字,并且仍然能够汇总消息中找到的关键字的值并显示总数,如下所示:
RowID ChatNo UserNO Chat Keywords Score
1 1 1 "...ex1 ex2 ex3" ex1, ex2, ex3 7
我做了一些搜索和测试,但没有找到一个对我有效的解决方案。因此,如果有人能给我一些帮助,我可能会继续,并让查询输出的结果在一个单一的分数总结行将不胜感激。
1条答案
按热度按时间gkl3eglg1#
您需要使用组\u concat()
也
distinct
似乎没有必要,所以我删除了它。试试这个: