获取共享相同关键字的SQL记录

时间:2014-02-06 17:22:16

标签: sql sql-server

我有文章关键字表:

id INT 
keyword VARCHAR

我有一篇文章ID,让我们说13.这篇文章在这个表中有4个关键字。 我正在尝试将其他文章分享到两个或更多关键字。

我可以使用此查询获取与原始文章具有相同关键字的文章列表:

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

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

我如何实现这一目标?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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