0

我正在尝试遍历表中的数据,并使用数据进行搜索以在另一个表中返回结果。

如何防止重复添加到表中?请注意,查询结果添加的顺序非常重要。因此,如果结果已经添加,我不希望再次添加它们。请注意,完整搜索类别所做的原始排名具有误导性,我不想使用它。

我正在使用游标,但有人告诉我可以使用简单查询来解决;我怎么做?

下面是代码。

 ...

    DECLARE @subQ NVARCHAR(200)
    SET @subQ = ''

    DECLARE cur1 CURSOR FOR
    SELECT combination FROM @Subqueries

    OPEN cur1
    FETCH NEXT FROM cur1 INTO @subQ

    WHILE @@FETCH_STATUS = 0
    BEGIN
        INSERT INTO @Results (app_id, rank, importance)
        SELECT app_id, rank, 1
        FROM CONTAINSTABLE(dbo.Applications, display_name, @subQ) KEY_TBL
        INNER JOIN Applications App
        ON KEY_TBL.[KEY] = App.app_id

        FETCH NEXT FROM cur1 INTO @subQ   
    END   

    CLOSE cur1
    DEALLOCATE cur1

    ...
4

2 回答 2

1

您在 while 循环中使用了 1 = 1。因此它将始终显示真实条件,结果是循环转换为无限循环。

在 while 循环中更改您的条件。

于 2012-10-17T07:29:50.943 回答
0

试试这个while循环

DECLARE @subQ NVARCHAR(200)
DECLARE @mn int
DECLARE @mx int
DECLARE @val varchar(100)
SET @subQ = ''

;WITH CTE as(select ROW_NUMBER() over (order by (select 0)) as rn,* from @Subqueries)
select @mn=MIN(rn),@mx=MAX(rn) from CTE

WHILE @mn>=@mx
BEGIN
select @val=somecolm from CTE where rn=@mn
--do here for each value of any column in CTE
SET @mn=@mn+1
END
于 2012-10-17T07:46:22.857 回答