我有一个包含成对配对的表格,该表格如下所示:
|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 |
我需要在表中找到所有多余的配对,但可惜我不知道如何查询。
答案 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
)