我正在为自己的特定需求建立广告网络:
当观众进入用户的文章时,我需要查找的是与该特定文章具有最高匹配关键字的广告(如果没有匹配关键字,则为任何广告)
用户关键字表示例:
ArticleID | keyword
1 | funny
1 | memes
1 | lol
2 | boring
广告客户关键字表示例
AdId | keyword
1 | funny
1 | lol
2 | funny
2 | food
3 | kids
因此,如果观众进入ID = 1的文章,则最终的广告将是 ID为1的广告,因为它同时匹配了“搞笑”和“大声笑”,因此结果更为详细:
Result:
AdId | count
1 | 2
2 | 1
3 | 0
如何建立查询来做到这一点?
答案 0 :(得分:2)
您可以加入关键字并计算结果:
SELECT AdId, COUNT(*)
FROM ad_keywords a
JOIN user_keywords u ON a.keyword = u.keyword
WHERE article_id = 1
GROUP BY AdId
ORDER BY 2 DESC
LIMIT 1