0

SQL:http ://www.sqlfiddle.com/#!2/0f7a0d5/4

表包含以下行:

INSERT INTO `friends` (`asker_user_id`, `asked_user_id`, `status`) VALUES (1,2,1);
INSERT INTO `friends` (`asker_user_id`, `asked_user_id`, `status`) VALUES (2,1,1);
INSERT INTO `friends` (`asker_user_id`, `asked_user_id`, `status`) VALUES (3,2,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
    AND f1.asker_user_id = 2

所以结果为 1。因为用户 2 只有用户 1 作为双向朋友。

如何显示用户 2 的待处理请求?询问用户 2 的用户 ID 在哪里?

这 (3,2,1) 是用户 2 的待处理请求。其中 3 要求 2 成为朋友。为了让他们成为双向朋友,将使用 (2,3,1) 创建新条目。

4

2 回答 2

1

您可以通过以下方式获取 peding 请求:

SELECT f1.asker_user_id AS friend_id
FROM friends AS f1 
LEFT 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 IS NULL
AND f1.asked_user_id = 2

sqlfiddle demo

于 2013-11-04T19:55:44.050 回答
0

这是你要找的吗?

这将显示希望与用户 2 成为朋友的用户,因此用户 2 有 2 个待处理请求

 SELECT f1.asker_user_id AS friend_id
 FROM friends AS f1 
 WHERE f1.status = 1 
 AND f1.asked_user_id = 2

演示

于 2013-11-04T20:05:29.043 回答