【问题标题】:sql distinct duplicates cross valuessql distinct重复交叉值
【发布时间】:2018-11-25 08:43:09
【问题描述】:

我正在尝试整理数据库以删除重复项。 假设我有一个看起来像这样的数据库

Date        | Value1 | Value2
01/01/2018       A        B    
01/01/2018       B        A
02/01/2018       A        B

在这种情况下,根据我的需要,前两行是相同的,所以我想删除一个(假设是第二行)。如果我使用 SELECT DISTINCT 它不会放弃它,因为它们实际上是不同的。

有没有简单的程序可以做到这一点?

谢谢

【问题讨论】:

    标签: sql sqlite duplicates distinct


    【解决方案1】:

    您可以使用exists 运算符来查找(并删除!)它们:

    DELETE FROM mytable a
    WHERE  EXISTS (SELECT *
                   FROM   mytable b
                   WHERE  a.value1 = b.value2 AND
                          a.value2 = b.value1 AND
                          a.value1 < b.value1)
    

    【讨论】:

      【解决方案2】:

      这是一种可能性:

      create table t(date,value1,value2);
      insert into t values
      ('01/01/2018','A','B'),
      ('01/01/2018','B','A'),
      ('02/01/2018','A','B');
      
      select distinct date,min(value1,value2) value1,max(value1,value2) value2 from t;
      

      【讨论】:

        猜你喜欢
        • 2015-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多