如何根据某些条件跳过 MSSQL 游标中的一行(迭代)?

2024-05-02

如何根据某些条件在 MSSQL 游标中跳过一行(迭代),我有一个可迁移数千条记录的 DTS,并且根据某些条件,某些记录不需要迁移,因为它们是重复的并且想要跳过这些记录。

知道如何在 MSSQL Cursor 中完成此操作吗?


我想最简单的方法是在游标内写入 IF 语句。如果条件为假,您将跳过记录。

 DECLARE @ID INT
 DECLARE Curs CURSOR FAST_FORWARD
 DECLARE @Cnt INT

 CREATE TABLE ##Duplicates (ID INT, CarColor VARCHAR (50) )

 FOR
        SELECT DISTINCT  CarID
        FROM    dbo.CarPark
        WHERE   CarColour <> 'red'
        ORDER BY CarID

    OPEN Curs

        FETCH NEXT FROM Curs INTO @ID

        WHILE @@FETCH_STATUS = 0

    BEGIN

             INSERT INTO  ##Duplicates
             SELECT CarID, CarColor
             FROM  dbo.CarPark          
             WHERE ID = @ID;

             SET @Cnt = (SELECT Count(*) FROM ##Duplicates WHERE ID = @ID) ;

             IF @Cnt < 2 
             THEN /* Migrate */
             ELSE PRINT 'Duplicate'
             END

        FETCH NEXT FROM Curs INTO @ID 

        END

    CLOSE Curs
    DEALLOCATE Curs;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何根据某些条件跳过 MSSQL 游标中的一行(迭代)? 的相关文章

随机推荐