难以获得CONTAINSTABLE以在SELECT查询中显示实际表

时间:2013-10-03 13:21:21

标签: sql sql-server

我一直在使用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]weightRank,但我还希望它返回所有FundraisingPages列。但是,我似乎无法将其转换为SELECT语句。

我已尝试过*FundraisingPages.*,但收到以下错误消息

  

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

现在我知道我只是在查询的rnk部分中选择FROM,但是任何尝试返回更多内容我都会收到以下消息

  

't'多次指定了'KEY'列。

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

1 个答案:

答案 0 :(得分:0)

我需要JOIN KEY等于我的表的ID列,然后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