MySQL查询两次加入同一个表,没有重复


MySQL query join this same table twice without duplicates

我有一个表users

id, ip, opponent
1, 123.123.123, 2
2, 123.123.123, 1
3, 123.123.123, NULL

我需要查询,给我看没有重复的与ips的列表。

ip_first_opponent, ip_second_opponent

我怎么能做到呢,我是sql的新手。

如果您想获得id为x的用户的所有对手的ip,您可以执行以下操作:

从作为我的用户和作为对手的用户中选择区别(对手.id)其中我.id=x和我.opponentId=opponts.id

(因此,您将表用户连接到自身,并约束对方id与对方id相同,DISTINCT只输出不同的ips。)

编辑:由于您想要选择用户及其对手的ip,因此查询变为:

从作为我的用户、作为我所在地的对手的用户中选择DISTINCT me.ip、opponts.ip。opponentId=opponts_id