这是我的样品表:
$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/