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关键字。