【发布时间】:2015-01-15 04:56:06
【问题描述】:
我想要一个 mysql 查询来检索不是当前用户好友的用户的记录列表以及当前用户向其他用户发送的好友请求。
这是我的users 表(id,用户名)
这是我的friends 表(id、friend_one、friend_two、状态)
status 0 表示未决请求,1 表示请求已接受。接受请求时,会触发 1 次更新和插入查询。例如 (1,4,1,0) 4 向 1 发送请求,用户 1 接受请求,现在朋友表中的条目将看起来像 (1,4,1,1) (2,1,4,1)。
用户(1,'A')
用户(2,'B')
用户(3,'C')
用户(4,'D')
用户(5,'E')
朋友表条目
朋友 (1,4,1,1)
朋友 (2,1,4,1)
朋友 (3,1,2,0)
朋友 (4,3,1,0)
预期结果
用户名id状态
B 2 0
E 5 NULL
编辑
这是我正在尝试的,但我也得到了一个记录,他向我发送了我不想要的朋友请求
SELECT u2.username, u2.id, f.status
FROM users u1
INNER JOIN users u2
ON u1.id != u2.id
LEFT OUTER JOIN friends f
ON u1.id = f.friend_one
AND u2.id = f.friend_two
WHERE u1.id = 1
AND (f.status IS NULL
OR f.status = 0)
【问题讨论】:
-
使用 SQL 的
NOT否定从“朋友”到“不是朋友”的条件。 -
但我还想要当前用户向其发送好友请求的用户列表。
-
你试过什么?似乎您只是要求我们为您编写查询。
-
这是我的查询
SELECT u2.username, u2.id, f.status FROM users u1 INNER JOIN users u2 ON u1.id != u2.id LEFT OUTER JOIN friends f ON (u1.id = f.friend_one AND u2.id = f.friend_two) OR (u1.id = f.friend_two AND u2.id = f.friend_one) WHERE u1.id = 1 AND (f.status IS NULL OR f.status = 0) -
@Manx_Warrior 您可以编辑您的问题以添加查询并使其更具可读性。
标签: mysql