2014-02-06 48 views
0

我对文章的关键词表:获取SQL记录共享相同的关键字

id INT 
keyword VARCHAR 

而且我有一个文章的ID,让我们说13本文在此表中4个关键词。 我想获得其他文章,他们共享2个或更多的关键字。

我能得到的和我这个查询原创文章相同的关键字的文章的列表:

SELECT id FROM table WHERE keyword IN (SELECT keyword FROM table WHERE id=13) 

但这只是给了我的所有文章共享至少一个关键字的列表...但我需要文章共享2个或更多的关键字,最好按大多数事件降序排列......

我该如何做到这一点?

回答

0
DECLARE @original_id int = 13 

SELECT 
    id, 
    COUNT(*) c 
FROM keywords k1 
INNER JOIN (
    SELECT keyword 
    FROM keywords 
    WHERE id = @original_id 
) k2 ON (k1.keyword = k2.keyword) 
GROUP BY id 
HAVING COUNT(*) > 1 
ORDER BY c DESC, id 
+0

正是我想要做的...完美, 谢谢! – Baris

0
SELECT id 
    , Count(*) As number_of_keywords 
FROM articles 
INNER 
    JOIN keywords 
    ON keywords.keyword = articles.keyword 
GROUP 
    BY id 
HAVING Count(*) >= 2 
+0

首先,我们没有包括在此公式中的文章表。关键词表具有我需要的所有信息,编号和关键字... 而且,文章表没有关键字,它们都在关键字表中... – Baris