0

我一直CONTAINSTABLE在我的查询中使用关键字匹配。我被要求扩展我们拥有的内容,以便它在特定列的权重上排名。我有一个更简单的查询显示如下:

SELECT [KEY], sum(rnk) as weightRank
FROM 
(
    SELECT RANK * 0.05 as rnk, * from CONTAINSTABLE (FundraisingPages, Description,  'marathon') 
    union all 
    SELECT RANK * 1 as rnk, * from CONTAINSTABLE (FundraisingPages, Title,  'marathon') 
) as t
group by [KEY]
order by weightRank desc

这很好,它返回[Key]and ,weightRank正如我所要求的,但我也希望它返回所有FundraisingPages列。但是,我似乎无法将其转化为SELECT声明。

我都试过了*FundraisingPages.*但我收到以下错误消息

列 't.rnk' 在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。

现在我知道我只是rnkFROM查询的一部分中进行选择,但是任何返回更多信息的尝试都会收到以下消息

为“t”多次指定了“KEY”列。

我知道我正在选择KEY,我只能假设匹配不止一次,这可能就是我看到这些错误的原因,但似乎我什至无法从该表中选择单个列而不ID进一步FundraisingPages错误。

4

1 回答 1

0

我需要JOIN在我的表KEYID列上,然后GROUP BY在表中的每一列上:

SELECT SUM(rnk) as weightRank, fp.*
FROM 
(
    SELECT RANK * 0.05 as rnk, [key] from CONTAINSTABLE (FundraisingPages, [Description],  @Keywords) 
    UNION ALL 
    SELECT RANK * 1 as rnk, [key] from CONTAINSTABLE (FundraisingPages, Title,  @Keywords) 
) AS t
JOIN
    FundraisingPages as fp on fp.PageId = [KEY] WHERE STATUS = 'L'
GROUP BY [KEY], fp.PageId, fp.Status, fp.Title, fp.SubTitle, fp.Url, fp.ImageUrl, fp.Description, fp.RecipientName, fp.CharityNumber, fp.FundraiserFirstName, fp.FundraiserLastName, fp.InsertDate, fp.UpdateDate
ORDER BY weightRank DESC
于 2013-10-03T14:16:58.140 回答