【问题标题】:MySQL query join this same table twice without duplicatesMySQL 查询两次无重复地加入同一个表
【发布时间】:2013-08-25 21:05:50
【问题描述】:

我有一张桌子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 的 ips。

标签: php mysql join mysqli


【解决方案1】:

如果你想获取id为x的用户的对手的所有ip,你可以这样做:

SELECT DISTINCT(opponents.id) FROM users as me, users as对手 WHERE me.id=x and me.opponentId=opponents.id

(因此,您将表 users 加入到自身,并限制对手 id 与对手的 id 相同,并且 DISTINCT 只输出不同的 ips。)

编辑: 既然要选择用户和他的对手的ip,查询就变成:

SELECT DISTINCT me.ip,从用户作为我的对手.ip,作为对手的用户 WHERE me.opponentId=opponents.id

【讨论】:

  • me.id==x 嗯,我不明白
  • 抱歉,您应该只使用 'me.id=x',不要使用双 '='。
  • 为什么将and 放在查询末尾,x 是什么?
  • not complete awake :) and 应该在两个 where 子句之间,x 是你想知道其对手的用户的 id
  • 我想显示所有fights 来自对手的ips
猜你喜欢
  • 2013-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-01
  • 2017-02-15
  • 2016-01-10
相关资源
最近更新 更多