如何在MySQL中搜索不是当前用户朋友的成员?
我有一个成员表和一个成员请求表。请求表中有作者id、收件人id和状态列。如果当前用户有一行,其ID作为作者ID,另一个成员作为收件人ID,反之亦然,并且状态为1,则该用户与该成员是朋友。我想建立一个搜索系统,可以通过用户输入的名字来查找用户不是朋友的成员。下面的查询用于按用户键入的名称查找用户的当前好友。我如何搜索用户不是朋友的成员如何在MySQL中搜索不是当前用户朋友的成员?,mysql,Mysql,我有一个成员表和一个成员请求表。请求表中有作者id、收件人id和状态列。如果当前用户有一行,其ID作为作者ID,另一个成员作为收件人ID,反之亦然,并且状态为1,则该用户与该成员是朋友。我想建立一个搜索系统,可以通过用户输入的名字来查找用户不是朋友的成员。下面的查询用于按用户键入的名称查找用户的当前好友。我如何搜索用户不是朋友的成员 SELECT r.author_id, m.member_id, m.display_name FROM member_requests AS r LEFT
SELECT
r.author_id, m.member_id, m.display_name
FROM member_requests AS r
LEFT JOIN members AS m ON m.member_id = r.author_id
WHERE r.recipient_id = 1
AND r.status = 1
AND m.display_name LIKE "John%"
UNION SELECT
r.recipient_id, m.member_id, m.display_name
FROM member_requests AS r
LEFT JOIN members AS m ON m.member_id = r.recipient_id
WHERE r.author_id = 1
AND r.status = 1
AND m.display_name LIKE "John%"
这个比你想象的容易多了。根据我对上一个问题的回答,如果您有某个人的好友列表,您可以在members表中搜索不在该列表中的ID 试试这个:
SELECT member_id
FROM members
WHERE member_id NOT IN(
SELECT recipient_id AS friends
FROM member_requests
WHERE author_id = 1 AND status = 1
UNION
SELECT author_id AS friends
FROM member_requests
WHERE recipient_id = 1 AND status = 1)
AND member_id != 1;