我在同一件事上尝试了两种不同的变体。第一个版本从 中选择freetexttable
,其他插入到临时表中并从中进行选择。我在第一个版本上尝试了许多变体(在两个范围级别选择几个组合,分组依据,不同,并将 [rank] 强制转换为整数。无论如何,第一个查询始终返回 3 行,每行都有值137
,而第二个查询始终返回 1 行,其值为137
。
这里发生了什么?为什么自由文本返回重复项,为什么不使用select distinct
或消除它们group by
?
注意:我想知道原因,而不是如何解决它。 我已经有了可接受的解决方法。
select * from
(
select distinct [rank] from freetexttable(dbo.vw_PPN, allKeywords, N'foo', 100000 )
where [key] = 3781054
) as CT
create table #temp ([rank] int)
insert into #temp
select distinct [rank] from freetexttable(dbo.vw_PPN, allKeywords, N'foo', 100000 )
where [key] = 3781054
select * from #temp
drop table #temp