2017-02-11 2 views
1

データベースに2つのファイル名(TextおよびText1)があります。 Text.txtの内容には「データ」が含まれています。 Text1.txtコンテンツには、「data」と「data1」が含まれます。最も類似したコンテンツを取得し、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 

期待される結果:

を私は "データ" を検索した場合、私が取得したいと思い、私が書いたことを

enter image description here

SQLクエリ最初の行の最初のText1.txtは の2つの類似点を持つためコンテンツ(「データ」および「データ1」)を含む。 Text.txtには2つ目の行が表示されるはずです(「データ」のみ)。

答えて

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は...私が欲しい、まさにつまり ありがとうございました。 –

関連する問題