这是我的样品表:

$user_id = $_SESSION['user_id'];

id   myid    friendid
-------------------------
1    3       1
2    3       2
3    2       3
4    6       1
5    4       2

现在我正试图弄清楚如何准确地对这些数据进行排序。
我希望能够获得一个基于以上信息的朋友请求。
上表的进一步解释是:如果myid是3,friendid是2,这意味着3是2的朋友,但不是必须的。
我只希望数据显示来自其他用户的请求
不是当我们已经是朋友的时候。即id,2和3
使用上面的示例表:
假设我的当前会话是2,这意味着我有两个来自表的请求,一个来自3,另一个来自4。因为我和3是朋友,所以不会出现。所以请求应该只显示4。
我试着创造一个逻辑,但我有点迷茫。
    WHERE
    friendid = $user_id
    AND

不知道里面的另一个部分会把逻辑放在哪里。

最佳答案

给定此示例数据:

CREATE TABLE t
    (`id` int, `myid` int, `friendid` int)
;

INSERT INTO t
    (`id`, `myid`, `friendid`)
VALUES
    (1, 3, 1),
    (2, 3, 2),
    (3, 2, 3),
    (4, 6, 1),
    (5, 4, 2)
;

此查询
SELECT
*
FROM
t t_out
WHERE
friendid = 2
AND NOT EXISTS (SELECT 1 FROM t t_in WHERE t_in.friendid = t_out.myid AND t_in.myid = t_out.friendid)

将得到以下结果:
+------+------+----------+
| id   | myid | friendid |
+------+------+----------+
|    5 |    4 |        2 |
+------+------+----------+

关于mysql - SQL逻辑-来自其他方向的好友请求,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34068010/

10-13 02:55