【问题标题】: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