【问题标题】:Finding duplicated column value pairs in sql table在sql表中查找重复的列值对
【发布时间】:2019-07-01 19:51:58
【问题描述】:

我有一个包含匹配对的表,该表如下所示:

|pairing_id|player1_id|player2_id|number_of_round|
| 132      | Thomas   |  Brian   |      1        |

我尝试编写一个 sql 查询,它显示所有冗余对,因此如果两个玩家名称相同,则配对是相同的,但第二次,Brian 是 player1,Thomas 是 player2。

所以这 2 场比赛被认为是同一对,因为球员姓名相同:

|pairing_id|player1_id|player2_id|number_of_round|
| 132      | Thomas   |  Brian   |      1        |
| 458      | Brian    |  Thomas  |      4        |

我需要在表中找到所有冗余配对,但遗憾的是我不知道如何查询。

【问题讨论】:

  • 那么结果集中的第二行是从哪里来的呢?
  • 我解决了我的问题(希望如此),基本上我试图找到一种方法,在一个充满随机生成对的表中找到所有重复的对。

标签: sql sqlite select multiple-columns


【解决方案1】:

可以通过EXISTS完成

select t1.pairing_id, t1.player1_id, t1.player2_id, t1.number_of_round
from myTable t1 
where exists (select null 
              from myTable t2 
              where t2.player1_id = t1.player2_id and t2.player2_id = t1.player1_id)
order by case when t1.player1_id > t1.player2_id then t1.player2_id else t1.player1_id end

【讨论】:

    【解决方案2】:

    您可以使用exists

    select t.* from tablename t
    where exists (
      select 1 from tablename
      where pairing_id <> t.pairing_id and player1_id = t.player2_id and player2_id = t.player1_id 
    )
    

    【讨论】:

      猜你喜欢
      • 2012-12-08
      • 2011-02-05
      • 1970-01-01
      • 2023-03-14
      • 2020-09-10
      • 2021-01-23
      • 2021-01-26
      • 1970-01-01
      相关资源
      最近更新 更多