在sql表中查找重复的列值对

时间:2019-07-01 19:51:58

标签: sql sqlite select multiple-columns

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

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

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

因此这2个对决被视为相同的对,因为玩家名称相同:

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

我需要在表中找到所有多余的配对,但可惜我不知道如何查询。

2 个答案:

答案 0 :(得分:2)

可以通过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

答案 1 :(得分:0)

您可以使用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 
)