我有一张与下面类似的桌子
试题表
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只作为Qid 1的类似标记。如果我查找Qid 2,它将返回Qid 1,因为它们共享1标记,Qid 2和3没有标签。如果我查找Qid 3,它会返回Qid 1,因为Qid 1有Qid 3的2个标签,但是Qid 2没有Qid 3的标签。
谢谢你的帮助。
发布于 2011-06-20 17:51:34
有可能是这样的吗?
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我不确定字段名,但你知道.
发布于 2011-06-20 18:11:19
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(*) deschttps://stackoverflow.com/questions/6415055
复制相似问题