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 に答える