选定表格项目中最常见的标签?

时间:2011-06-20 17:26:12

标签: mysql sql

我有一张类似于下面的表

问题表

Qid  Tags
---  ---------
1    SQL
1    DATABASE
1    ALGORITHM
2    ALGORITHM
2    TAGS
3    SQL
3    SYNTAX
3    DATABASE

以下

SELECT * FROM Question table WHERE TAGS='SQL'

将显示:

Qid  Tags
---  ----
1    SQL
2    SQL
3    SQL

我正在寻找一个基于相似标签显示最高相关问题的查询。

所以,如果我查询问题表 - Qid=1。结果将是Qid 3,因为Qid 1和Qid 3有两个相似的术语,但Qid 2只有1个类似的标签Qid 1.如果我查找Qid 2,它将返回Qid 1,因为它们共享1个标签和Qid 2和3没有共享标签。如果我查询Qid 3,它将返回Qid 1,因为Qid 1有2个Qid 3标签,但Qid 2没有Qid 3的标签。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

沿着这些方向可能有什么?

SELECT Qid, COUNT(*) AS TagsInCommon FROM Questions
WHERE Tags IN (
  SELECT DISTINCT Tags FROM Questions WHERE Qid=1
)
GROUP BY Qid
ORDER BY TagsInCommon DESC

我不确定字段名称,但你明白了......

答案 1 :(得分:0)

declare @Qid int
set @Qid = 1

select top 1 Q2.Qid, COUNT(*) from Questions Q1
inner join Questions Q2 on Q1.Tags = Q2.Tags
where Q1.Qid = @Qid and Q2.Qid <> @Qid
group by Q2.Qid
order by COUNT(*) desc