首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >删除SQL中的重复记录

删除SQL中的重复记录
EN

Stack Overflow用户
提问于 2020-04-04 03:34:58
回答 1查看 48关注 0票数 1

我有一张和下面一样的桌子。

代码语言:javascript
运行
复制
    |----------|---------|
    |  NAME1   |  NAME2  | 
    |----------|---------|   
    |     R1   |   R2    |  
    |     R3   |   R4    |  
    |     R2   |   R1    |  
    |     R1   |   R5    |  
    |     R4   |   R3    |  
    |--------------------|

但是这里我需要考虑元组(R1,R2)和(R2,R1)一样。这意味着只有一个元组(R1,R2)和(R2,R1)可以放在最后一个表中。同样,(R4,R3)和(R3,R4)是相同的。这意味着只有一个元组(R3,R4)和(R4,R3)可以放在最后一个表中。

决赛表应该是这样的。

代码语言:javascript
运行
复制
   |----------|---------|
   |  NAME1   |  NAME2  | 
   |----------|---------|   
   |     R1   |   R2    |  
   |     R3   |   R4    |  
   |     R1   |   R5    |  
   |--------------------|

我如何使用SQL来做到这一点呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-04 03:40:26

您可以尝试使用带有现有逻辑的delete:

代码语言:javascript
运行
复制
DELETE
FROM yourTable t1
WHERE EXISTS (SELECT 1 FROM yourTable t2
              WHERE t2.Name2 = t1.Name1 AND t2.Name1 = t1.Name2) AND
      Name1 > Name2;

这里的方法是删除任何以相反顺序出现的带有名称的元组。第一个名字在字典上比第二个名字大也是必需的。

如果您只是想以这种方式查看您的数据,那么可以使用最小/最大的技巧:

代码语言:javascript
运行
复制
SELECT DISTINCT
    LEAST(Name1, Name2) AS Name1,
    GREATEST(Name1, Name2) AS Name2
FROM yourTable;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61023449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档