不确定是否应在Microsoft SQL Server 2008 R2中使用游标

不确定是否应在Microsoft SQL Server 2008 R2中使用游标,sql,sql-server-2008-r2,cursor,Sql,Sql Server 2008 R2,Cursor,我这里有个问题。问题是我有一个名为MOSTEP的表,在这个表中有一个名为MOID的列。我需要做的是检查重复的值,我的意思是,例如,在表中有以下值: 10, 9, 8, 6, 9, 5, 2 10 我需要检查表中MOID的所有值,然后做两件事,条件的细节与此问题无关,因此我将省略它们: 如果该值只出现一次,我将对它们中的每一个进行处理 如果该值出现不止一次,我会对每个值执行其他操作 我知道如何使用 COUNT(MOID) 然而,我不知道如何在同一个查询中检查这一点并使其高效 我在考虑使用两个游

我这里有个问题。问题是我有一个名为
MOSTEP
的表,在这个表中有一个名为
MOID
的列。我需要做的是检查重复的值,我的意思是,例如,在表中有以下值:

10, 9, 8, 6, 9, 5, 2 10
我需要检查表中
MOID
的所有值,然后做两件事,条件的细节与此问题无关,因此我将省略它们:

  • 如果该值只出现一次,我将对它们中的每一个进行处理
  • 如果该值出现不止一次,我会对每个值执行其他操作
  • 我知道如何使用

    COUNT(MOID)
    
    然而,我不知道如何在同一个查询中检查这一点并使其高效

    我在考虑使用两个游标,一个用于存储所有重复的值,然后只获取每一行,另一个用于执行相同的操作,但使用非重复的值。但我听说光标并不总是最好的选择

    我也在考虑在
    SELECT
    中执行
    IF
    CASE
    条件,但我不确定如何执行


    如果有人能帮我,我会非常感激的

    听起来没有任何理由使用光标。 您可以将
    COUNT()
    OVER()
    CASE
    有效地结合使用:

    ;WITH cte AS (SELECT *,COUNT(MOID) OVER(PARTITION BY MOID) MOID_CT
                  FROM MOSTEP)
    SELECT MOID
          ,CASE WHEN MOID_CT = 1 THEN 'Something' ELSE 'SomethingElse' END
    FROM cte
    

    演示:

    听起来没有任何理由为此使用光标。 您可以将
    COUNT()
    OVER()
    CASE
    有效地结合使用:

    ;WITH cte AS (SELECT *,COUNT(MOID) OVER(PARTITION BY MOID) MOID_CT
                  FROM MOSTEP)
    SELECT MOID
          ,CASE WHEN MOID_CT = 1 THEN 'Something' ELSE 'SomethingElse' END
    FROM cte
    

    演示:

    听起来没有任何理由为此使用光标。 您可以将
    COUNT()
    OVER()
    CASE
    有效地结合使用:

    ;WITH cte AS (SELECT *,COUNT(MOID) OVER(PARTITION BY MOID) MOID_CT
                  FROM MOSTEP)
    SELECT MOID
          ,CASE WHEN MOID_CT = 1 THEN 'Something' ELSE 'SomethingElse' END
    FROM cte
    

    演示:

    听起来没有任何理由为此使用光标。 您可以将
    COUNT()
    OVER()
    CASE
    有效地结合使用:

    ;WITH cte AS (SELECT *,COUNT(MOID) OVER(PARTITION BY MOID) MOID_CT
                  FROM MOSTEP)
    SELECT MOID
          ,CASE WHEN MOID_CT = 1 THEN 'Something' ELSE 'SomethingElse' END
    FROM cte
    

    演示:

    光标很少是必要的,而且从来都不是一个好的选择-只有最后的选择,如果没有其他方法有效的话….光标很少是必要的,从来都不是一个好的选择-只有最后的选择,如果没有其他方法有效的话….光标很少是必要的,从来都不是一个好的选择-只有最后的选择,如果没有其他办法,那么诅咒几乎是不必要的,也从来不是一个好的选择——只有最后的办法,如果没有其他办法的话……霍莉天母,你救了我霍莉天母,你救了我霍莉天母,你救了我霍莉天母,你救了我霍莉天母,你救了我霍莉天母,你救了我