这是我的样本表:
$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的朋友,但反过来则没有必要。
使用上面的示例表: 假设我当前的会话是2,这意味着我有两个来自表的请求,一个来自3,另一个来自4。因为我是3的朋友,所以不会出现。所以请求应该只显示4。
我试图为此创建一个逻辑,但我有点迷失。
WHERE
friendid = $user_id
AND
不确定那里的其他部分会使逻辑到位。
答案 0 :(得分:1)
鉴于此样本数据:
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 |
+------+------+----------+