Sql server 从具有合并的表中选择distinct(columnName)

Sql server 从具有合并的表中选择distinct(columnName),sql-server,Sql Server,我有一张像这样有很多唱片的桌子。例如: HREFTopic PopularTopic LastModifiedTime ------------------------------------------------------------------------------ //twitter.com/search?q=%23Happy #Happy St. Patrick's Day 20

我有一张像这样有很多唱片的桌子。例如:

   HREFTopic                       PopularTopic                  LastModifiedTime
   ------------------------------------------------------------------------------
 //twitter.com/search?q=%23Happy    #Happy St. Patrick's Day    2015-03-17 19:57:18.000
 //twitter.com/search?q=%23Happy    #Happy St. Patrick's Day    2015-03-17 18:57:17.000
 //twitter.com/search?q=%23HappyV   #Happy Valentines Day   2015-03-17 17:57:15.000
这是我的存储过程

 declare @abc nvarchar(max)  
 declare @SearchKey nvarchar(max) 
 select @SearchKey ='Happy'
 select top 10   @abc =  COALESCE(@abc + '','') + '<li>' + '<a class="z" href="' +'../q.aspx?q=' + @SearchKey + '">' + (PopularTopic)  + '</a></li>' + char(10) + char(13)      
 from PopularTrends  where HREFTopic like    '%'+ @SearchKey +'%'   order by LastModifiedTime desc   

 select @abc 
输出为@abc=

 <li><a class="z" href="../q.aspx?q=Happy">Happy St. Patrick's Day</a></li>
 <li><a class="z" href="../q.aspx?q=HappyV">Happy Valentines Day  </a></li> 
 <li><a class="z" href="../q.aspx?q=Happy">Happy St. Patrick's Day</a></li> 
 <li><a class="z" href="../q.aspx?q=Happy">Happy St. Patrick's Day</a></li> 
 <li><a class="z" href="../q.aspx?q=Happy">Happy St. Patrick's Day</a></li>
 <li><a class="z" href="../q.aspx?q=Happy">Happy St. Patrick's Day</a></li>
 <li><a class="z" href="../q.aspx?q=Happy">Happy St. Patrick's Day</a></li> 
但我只需要按LastModifiedTime区分主题顺序,我希望结果是:

 <li><a class="z" href="../q.aspx?q=Happy">Happy St. Patrick's Day</a></li>
 <li><a class="z" href="../q.aspx?q=HappyV">Happy Valentines Day  </a></li>
我不能得到明确的主题,而是我得到了所有的记录。
有人能帮我找到正确的问题吗

这应该可以做到,学习使用XML路径进行字符串连接比使用未记录的变量构建过程更好。互联网上有很多例子

WITH cte AS (
 select top 10 PopularTopic, MAX(LastModifiedTime) AS LMT
 from PopularTrends  
 where HREFTopic like '%'+ @SearchKey +'%'  
 GROUP BY PopularTopic 
 order by LMT desc   
)
SELECT 
 (
  SELECT '<li><a class="z" href="../q.aspx?q='+@SearchKey+'">' + PopularTopic + '</a></li>' + char(10) + char(13)               
  FROM cte
  FOR XML PATH(''), root('h'), type
 ).value('/h[1]','varchar(max)')

而且,值得一提的是,如果您只是从数据库中返回前10位流行图片并在应用程序层中处理列表构建,您的总体性能会更好。

如果您将单词DISTINCT放在前10位之后,会发生什么?如果这不起作用,请尝试按PopularTopicsyntax error分组,将单词distinct放在top10后面,然后按groupby给出错误。它工作得非常好。谢谢---我有超过150000条记录,这个搜索键的处理需要时间。4秒钟后我才得到结果。我不确定如何在一秒钟内完成搜索。要加快LIKE%%搜索速度,您无能为力,因为它无法使用索引。4秒搜索150000条记录对这种搜索来说是相当不错的。您可以通过使用全文索引来提高性能。我已经安装了全文搜索。现在,我应该如何相应地更改查询?相同的查询是否有效?我从未使用过全文搜索,但没有,我认为您必须更改查询才能使用它。在网上寻找例子。我想它可能使用了CONTAINS关键字。