如何在MySQL中搜索不是当前用户朋友的成员?

如何在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

我有一个成员表和一个成员请求表。请求表中有作者id、收件人id和状态列。如果当前用户有一行,其ID作为作者ID,另一个成员作为收件人ID,反之亦然,并且状态为1,则该用户与该成员是朋友。我想建立一个搜索系统,可以通过用户输入的名字来查找用户不是朋友的成员。下面的查询用于按用户键入的名称查找用户的当前好友。我如何搜索用户不是朋友的成员

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;