【问题标题】:sql select only when there is two way relationship for user仅当用户有两种方式关系时才选择sql
【发布时间】:2013-11-05 01:56:42
【问题描述】:

我在这里做所有的测试:http://www.sqlfiddle.com/#!2/85d6d/1

我试过了:

SELECT f1.asked_user_id AS friend_id
FROM friends AS f1 JOIN friends AS f2
    USING (asked_user_id)
WHERE f1.asker_user_id = 3 AND f2.asker_user_id = 3 
    AND f1.status = 1 AND f2.status = 1

但结果并不令人满意,返回的friend_id并不总是双向的。

我已经:(3,2,1) 和 (2,3,0)

因此 user_id 3 没有双向好友,因此不应显示任何结果。但我的查询仍然出现。

我的意思是双向友谊:

(1,2,1) (2,1,1) 其中:asker,asked,status

【问题讨论】:

  • 所以你想要所有只有两种方式朋友的用户?
  • @wxyz 不,我想要当前用户的朋友。但是朋友被定义为两种方式。我不确定这是否有意义:S

标签: mysql sql


【解决方案1】:
SELECT f1.asked_user_id AS friend_id
FROM friends AS f1 JOIN friends AS f2
    ON f1.asked_user_id = f2.asker_user_id
   AND f1.asker_user_id = f2.asked_user_id
WHERE f1.status = 1 AND f2.status = 1

FIDDLE

【讨论】:

  • 非常感谢。这将返回所有具有双向关系的用户,对吗?我想向当前用户显示朋友...
  • 只需将当前用户的条件添加到此查询中,如下所示: .... and f1.asker_user_id = 2
  • 另外,我喜欢 'initiator' 和 'reciprocator'... 有一个很好的戒指。
  • @wxyz 嘿,为当前用户选择待处理请求怎么样?如何从该列表中排除双重朋友?
猜你喜欢
  • 2011-12-17
  • 2023-03-21
  • 1970-01-01
  • 2012-12-01
  • 1970-01-01
  • 2014-11-12
  • 1970-01-01
  • 1970-01-01
  • 2014-07-05
相关资源
最近更新 更多