2017-02-11 16 views
1

我在数据库中有两个文件名(Text和Text1) Text.txt内容包含“data”。 Text1.txt内容包括“data”和“data1”。检索最相似的内容并显示为SQL中的第一个结果

enter image description here

SQL查询,我写道:

SELECT [FileName], [FilePath] FROM dbo.[tb_CrawlData] cr 
    WHERE EXISTS (SELECT 1 FROM [tb_CrawlData] cd 
       WHERE cd.Content like '%data%' AND 
        cr.Content like '%' + cd.Content + '%' 
      ) 
    GROUP BY cr.FileName, [FilePath] 
    ORDER BY cr.FileName 

结果:

FileName FilePath 
Text.txt H:\Text.txt 
Text1.txt H:\New folder (2)\Text1.txt 

预期结果:

如果我搜索 “数据”,我想获得Text1.txt首先在我的第一行 ,因为它有两个相似的内容(“数据”和“数据1”)。 Text.txt应显示第二行,因为它仅包含(“数据”)。

回答

0

order by子句中只需添加一个count(*) desc

select [FileName], 
    [FilePath] 
from dbo.[tb_CrawlData] cr 
where exists (
     select 1 
     from [tb_CrawlData] cd 
     where cd.Content like '%data%' 
      and cr.Content like '%' + cd.Content + '%' 
     ) 
group by cr.FileName, 
    [FilePath] 
order by count(*) desc, 
    cr.FileName 
+0

@GurV ......太感谢你了 这正是我想要的。 –

相关问题