【问题标题】:columns referencing each other相互引用的列
【发布时间】:2020-08-06 23:12:53
【问题描述】:

假设有一个包含如下数据行的表。

正如您在上面看到的,申请人 79 有一个双胞胎 80,而双胞胎 80 有一个双胞胎申请人 79。

由于 ID 11 和 12 实际上是相同的信息,我希望选择一个唯一的双胞胎数据如下。

如何在 SQL Server 中实现这一点?

非常感谢您。

【问题讨论】:

  • 请向我们展示您的尝试 - SO 不是代码编写服务。
  • 请以格式化文本(不是图像)的形式添加数据,使用 DDL/DML 语句创建可用于测试的示例数据。

标签: sql sql-server tsql subquery


【解决方案1】:

你可以这样做:

select * from t where ApplicantId < TwinId

【讨论】:

  • @AJ 。 . .对于样本数据,这是最好的解决方案。对于更一般的情况(即,并非所有行都是唯一的并且具有匹配的对),这里的答案都不起作用。
【解决方案2】:

一个选项使用not exists

select t.*
from mytable t
where not exists (
    select 1
    from mytable t1
    where 
        t1.applicantid = t.twinid
        and t1.twinid = t.applicantid
        and t1.applicantid < t.applicantid
)

当存在镜像记录时,这将保留具有最小applicantid 的记录。

【讨论】:

    猜你喜欢
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    • 2019-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多