【问题标题】:T-SQL Check for duplicate field1 values but different field2 valuesT-SQL 检查重复的 field1 值但不同的 field2 值
【发布时间】:2010-11-02 15:06:24
【问题描述】:

我的情况是这样的:

我有一个结构像这样的表(简化) -

CREATE TABLE [dbo].[pe_mem](
    [pm_member] [int] NULL,
    [pm_surname] [char](50) NULL,
    [pm_forename] [char](50) NULL,
    [pm_rsi_num] [char](11) NULL

) ON [PRIMARY]

我需要运行查询以查找所有具有相同 pm_rsi_num 但不同 pm_surname 的行。

谁能帮我解决这个问题?

谢谢!

【问题讨论】:

    标签: asp.net sql sql-server tsql


    【解决方案1】:

    您可以为此使用自联接:

    select  *
    from    pe_mem t1
    join    pe_mem t2
    on      t1.pm_rsi_num = t2.pm_rsi_num
            and t1.pm_surname <> t2.pm_surname
    

    【讨论】:

      【解决方案2】:

      存在变体:

      select  *
      from    pe_mem t1
      where exists
      (select null
       from   pe_mem t2
       where  t1.pm_rsi_num = t2.pm_rsi_num
              and t1.pm_surname <> t2.pm_surname)
      

      单表扫描版本:

      select pm_rsi_num
      from pe_mem
      group by pm_rsi_num
      having count(distinct pm_surname) > 1
      

      【讨论】:

        【解决方案3】:

        只需将表格重新连接起来并使用您的条件作为连接条件:

        select * from pe_mem as p1
        inner join pe_mem as p2
        on p1.pm_rsi_num = p2.pm_rsi_num
            and p1.pm_surname <> p2.pm_surname
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-11-17
          • 1970-01-01
          • 1970-01-01
          • 2022-01-05
          • 2012-01-02
          • 1970-01-01
          相关资源
          最近更新 更多